写缓存间歇性不正常

树莓派 2011-08-24 04:15:57
各位高手,小弟写了一个在屏幕中间打印HelloWorld的小代码,不过,直接在DOS里面运行,没有效果。
如果运行 debug 后,再退出debug,然后运行,就可以了,不知道什么问题。
我是初学者。。。。

assume cs:abc
data segment
db "Hello World"
data ends
abc segment
start: mov ax,0b800H
mov es,ax
mov ax,data
mov ds,ax
mov si,0
mov di,12*160+12*2
mov cx,11
s:mov al,[si]
mov es:[di],al
mov al,02H
mov es:[di+1],al
inc si
add di,2
loop s
mov ax,4c00H
int 21H
abc ends
end start
...全文
47 点赞 收藏 9
写回复
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
Areslee 2011-09-01
mov ah,0
mov al,7 ;;;;;;;;;;;;;;显示模式
int 10h
以上代码就可以设置显示模式
回复
Areslee 2011-08-26
不同的显示模式用到的显示缓冲区位置是不同的
一般而言你使用b800h作显缓应该是07号显示模式
具体的差异你需要去查BIOS资料
回复
树莓派 2011-08-26
[Quote=引用 5 楼 areslee 的回复:]

不是操作系统的问题
你没有设置正确的显示模式而已
DEBUG运行之后帮你设置了
[/Quote]

怎么正确的设置啊。。。。
回复
大熊猫侯佩 2011-08-26
建议后面加一个jmp $,或者不要debug看结果。
回复
Areslee 2011-08-25
不是操作系统的问题
你没有设置正确的显示模式而已
DEBUG运行之后帮你设置了
回复
canmeng 2011-08-24
我以前遇到过这样的问题。确实有时编译好了,打开dos窗口,直接运行不出结果。打开debug,再退出debug,就行了。这不是你的程序的问题,是操作系统的问题。
回复
abee23 2011-08-24
我没有DEBUG这个呀, 直接编译,直接运行。。。。。

间歇性 ?
回复
树莓派 2011-08-24
所以说是间歇性的问题。。。。。
我这里一开始不行,如果你去Debug这个东西,然后再运行就OK了。。。。
不知道什么原因
回复
abee23 2011-08-24
我直接编译上面的代码,直接生成一个EXE,然后放到DOS里面运行,正常呀,有图有真相


回复
发动态
发帖子
汇编语言
创建于2007-08-27

2.0w+

社区成员

汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
申请成为版主
社区公告
暂无公告