Del 发表于 2012-3-11 10:35:33

汇编之小问题

大家好,小弟这个看这里的视频,学汇编两个星期了,昨天学到那个第十章,自己可以写出来那个show_str和除法不溢出,但是写第三个的时候发现修改显存后B800段所对应位置的数据没有改变。不知其所以,因此又写了一个程序测试,发现依然没有改变。(我改写的是B800:100【即B800:64h]和B800:101[即B800:65h],查看的时候是用d指令在dos 中查看的)求各位大能指点一下啊。。测试的程序如下:
assume cs:code
code segment
start :      mov ax,0b800h;
             mov es,ax;
             mov byte ptr es:,32h
             mov byte ptr es:,2
            
             mov ax,4c00h;
             int 21h;
            
code ends
end start

Del 发表于 2012-3-11 10:39:56

PS:还有,那个显存地址B8f9f之后的是属于第二页的内容,我想问那个是不是第一页的内容被滚屏后第二页的内容就补上来?

风剑河 发表于 2012-3-11 11:00:49

0号显存页永远存放的是当前屏幕中字符的属性,也就是说你一写入他就显示;而你在debug中单步调试时,或在用d查看时,你注意到屏幕在不断滚动变化了吗?也就是说0号页的显存中数据在不断变化,所以你用d就查不到你刚写入的数据。
不用debug,先用cls清屏,然后直接运行你的*.exe程序,应该就能看见你程序的运行结果了

关键是感觉 发表于 2012-3-11 11:04:22

学完都忘记了。。蛋疼。。

Del 发表于 2012-3-11 11:06:51

风剑河 发表于 2012-3-11 11:00 static/image/common/back.gif
0号显存页永远存放的是当前屏幕中字符的属性,也就是说你一写入他就显示;而你在debug中单步调试时,或在用 ...

只是一闪而过,看到结果。而且我第一个show_str在调试的时候可以看到welcome to masm!停留在屏幕中。。   而且为什么我加上mov ax,01h,执行的时候就出错呢?

Del 发表于 2012-3-11 11:07:07

Del 发表于 2012-3-11 11:06 static/image/common/back.gif
只是一闪而过,看到结果。而且我第一个show_str在调试的时候可以看到welcome to masm!停留在屏幕中。。...

不好意思,是看不到结果

风剑河 发表于 2012-3-11 11:35:18


先cls清屏,然后直接运行exe,正常显示绿色的“2”。

Del 发表于 2012-3-11 11:48:42

f:\未命名.jpy:'(我就是这样做的,但是老是没有,不知道什么问题
页: [1]
查看完整版本: 汇编之小问题