为什么有些字符显示在汇编代码中?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了为什么有些字符显示在汇编代码中?相关的知识,希望对你有一定的参考价值。
我在汇编中写了一个简单的打印字符串(16位),但在运行.EXE代码后,它显示我的字符串和很多字符,我不知道它们来自哪里....
stk segment
dw 32 dup(0)
stk ends
dts segment
msg db "hello world"
dts ends
cds segment
assume ss:stk , cs:cds , ds:dts
main proc far
mov ax,seg dts
mov ds,ax
mov dx,offset msg
mov ah,09h
int 21h
mov ah,4ch
int 21
main endp
cds ends
end main
答案
你已经要求DOS打印你使用的字符串
msg db "hello world"
你已经为DOS提供了这个字符串的开头(mov dx,offset msg
),但DOS无法知道字符串的结束位置。这就是为什么你需要用美元字符($)终止你的字符串。然后DOS知道这是字符串的结尾。 DOS不会显示$
本身。
msg db "hello world$"
或者如果您愿意清楚:
msg db "hello world", "$"
作为改进,您还可以打印换行符。将定义更改为:
msg db "hello world", 13, 10, "$"
ASCII代码13是回车,它将光标移动到屏幕的左边缘,ASCII代码10是换行符,它将光标向下移动到屏幕上。 美元字符($)再次是字符串的最后一项。
mov ah,4ch int 21
现在这可能只是一个错字,但它是一个重要的错误。你忘了十六进制后缀(h)。
mov ax,4C00h
int 21h
以上是关于为什么有些字符显示在汇编代码中?的主要内容,如果未能解决你的问题,请参考以下文章