[英]printing in assembly programming using FASM
我正在尝试使用以下代码来打印消息:
org 100h
start:
jmp begin
begin:
mov ah, 9
mov dx, msg
msg db 'Ascii sign:.$'
int 21h
finish:
mov ax, 4c00h
int 21h
它可以编译,但什么也不显示。 但是,如果将“ msg db'Ascii sign:。$'”行移到“ jmp begin”下方,则该消息将能够显示。
我想知道背后的逻辑。 这在我声明消息的地方会有所不同吗?
这只是出于好奇,谢谢!
是。 现在,在代码中间定义了msg
,CPU将尝试在其中执行它。 通常,您想在数据段中分别定义数据。 我不记得FASM的语法,但是使用MASM或TASM,通常会执行以下操作:
.model small
.data
msg db 'ASCII sign: .$'
.code
main proc
mov ah, 9
mov dx, offset msg
int 21h
mov ax, 4c00h
int 21h
main endp
end main
如果确实必须在代码部分中包含字符串,则只需跳过它们即可。
begin:
mov ah, 9
mov dx, msg
jmp overstring
msg db 'Ascii sign:.$'
overstring:
int 21h
finish:
mov ax, 4c00h
int 21h
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.