注册 登录
编程论坛 汇编论坛

关于显示的问题,求指导啊。

随风的飞叶 发布于 2015-10-08 11:09, 4378 次点击
assume cs:codesg,ds:data
data segment
     db'welcome to masm!'      ;定义一个数据段
data ends
codesg segment
   a:mov ax,data
     mov ds,ax              ;数据段地址放入DS
     mov ax,0b878h
     mov es,ax              ;显示缓冲区地址放入ES
     mov si,0
     mov di,0
     mov cx,16              
   s:mov al,ds:[si]         ; 读入数据段内容
     mov ah,2
     mov es:[di+20],ax      ;数据段内容放入显示缓冲区
     inc si                    
     add di,2               
     loop s
     mov ax,4c00h
     int 21h
codesg ends
end    a
运行后结果。debug运行后会显示,关掉再次打开程序,不会显示字符。

7 回复
#2
hu9jj2015-10-08 18:55
再次打开仍是在debug下么?
#3
随风的飞叶2015-10-08 20:21
再次打开直接运行程序。正常应该是直接运行程序就能显示的。我的非得debug单步执行过一遍后,再运行程序才会显示。我用的是xp系统。masm5.0;只要不退出,运行就显示,一旦退出了,运行就不能显示了。
#4
随风的飞叶2015-10-08 20:25
只有本站会员才能查看附件,请 登录
只有本站会员才能查看附件,请 登录
能显示的是单步执行后的,不能显示的是没有单步执行的。
#5
wmf20142015-10-09 08:34
无论在哪个下面运行都不能显示。你这是直接操作显存,在保护模式下是不支持这样做的,在纯DOS模式下并且显卡设置为西文字符模式可以这样做。
#6
随风的飞叶2015-10-09 10:08
看教学视频时,上面的能直接显示,郁闷了,总不能换实模式啊,这样很容易出问题的。再做实验先DEBUG单步算了。总之谢谢了。
#7
随风的飞叶2015-10-09 10:10
怎么给分,怎么结贴啊。
#8
wfoo2015-10-13 11:58
如果需要在实模式下测试,我还是推荐用qemu,你可以做一个小的镜像文件相当于电脑的真正硬盘,这个文件的前512个字节相当于硬盘的MBR,你只要在这512字节的前512-64字节做个引导程序(来引导你的程序),然后把你的程序让在第2个512字节处,相当于正真电脑引导操作系统那样引导你的程序。在刚刚引导的时候CPU还是处于实模式的
   你后还可以在这个系统下写一个你自己的小操作系统。这个仿真软件还有个好处,在实模式下可以设断点,可以单步,X86的仿真器可能要十几万,但是如果是学习,用这个软件就能达到同样的效果。
1