【发布时间】:2013-04-07 09:14:59
【问题描述】:
我需要编写一个程序来将 ASCII 符号写入显存。
.model tiny
.stack
.data
.code
main:
mov ax, 0b800h
mov ds, ax
mov aL, 'x'
mov es, bx
mov es:[1], aL
mov ah, 4ch
int 21h
end main
这段代码目前还没有反应;它编译、运行然后退出而不打印任何内容。 我想我漏掉了一行。
【问题讨论】:
-
您将
ds设置为0b800h,并将es设置为未定义的值,或者至少不是0b800h(bx)。然后你使用es来寻址显存,这显然是失败的。 -
太棒了,我太傻了。但是我仍然无法以这种方式打印字符,并且程序的行为与以前一样。
-
您的 ASCII 码偏移量无效 (
es:[1])(奇数偏移量用于颜色和属性)并且您没有定义颜色(好吧,您的颜色和属性字节是 @987654331 @,即x)。看我的回答stackoverflow.com/questions/15462807/…。 -
@user - 屏幕上的每个位置由两个字节组成,一个保存字符代码,另一个保存颜色。如果您不同时设置两者,您最终可能会在黑色背景上显示一个黑色字符。很难阅读!
标签: memory video assembly x86-16 tasm