如何在装配中打印笑脸?

时间:2009-12-20 23:21:16

标签: assembly ascii dos ntvdm

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

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位链接器

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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