3

我用汇编程序编写了一个程序并编译了它。它的目的是打印一个蓝色的笑脸,然后等待用户按下一个键才终止。它确实做到了最后一点,但它不会打印笑脸。有人可以解释我做错了什么吗?

CSEG segment
org 100h
Begin:

mov ax,0B800h
mov es,ax
mov di,0

mov ah,31
mov al,1
mov es:[di],ax

mov ah,10h
int 16h

int 20h

CSEG ends
end Begin

我用带有16 位链接器的MASM编译它

4

3 回答 3

1

如果您处于纯文本视频模式,则只能直接戳视频缓冲区。我猜你正在使用某种 Windows 而不是真正启动 DOS,所以你可能处于图形模式。

可以做的是打开一个控制台窗口,然后AltEnter进入全屏文本模式。尝试在那里运行你的程序。

于 2009-12-20T23:43:55.337 回答
0

自从我使用 MASM 以来已经大约一年左右了,我家里唯一的参考书是 MIPS,所以我承认有点生疏,但是打印到屏幕需要系统中断(int 21h),但唯一的系统我看到的中断是键盘中断后的程序终止调用。

于 2009-12-20T23:34:25.993 回答
0

您的代码没问题,您只需要按照 Greg Hewgill 的建议全屏运行,或者将命令窗口设置为使用旧的光栅字体(如 SYSTEM)。右键单击窗口的标题栏并查看“字体”选项卡。

于 2011-01-29T01:41:14.567 回答