我在汇编程序中编写了一个程序并编译了它。 用于打印蓝色笑脸,然后等待用户在终止之前按键。它确实做到了最后一点,但它不打印笑脸。有人可以解释我做错了什么吗?
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
我用 MASM 编译了 16位链接器
答案 0 :(得分:1)
如果您处于纯文字视频模式,则只能直接戳视频缓冲区。我猜你正在使用某种类型的Windows而不是实际启动DOS,所以你可能处于图形模式。
您可以能够做的是打开一个控制台窗口,然后 Alt 输入进入全屏文本模式。尝试在那里运行你的程序。
答案 1 :(得分:0)
自从我使用MASM以来已经有一年左右的时间了,我家里唯一的参考书是MIPS,所以我确实有点生疏,但是屏幕打印需要系统中断(int 21h),我看到的唯一系统中断是键盘中断后的程序终止调用。
答案 2 :(得分:0)
您的代码没问题,您只需要像Greg Hewgill建议的那样全屏运行,或者设置命令窗口以使用旧的光栅字体(如SYSTEM)。右键单击窗口的标题栏,然后查看“字体”选项卡。