jjaicx 发表于 2013-7-12 10:35:29

做练习的时候发现的一个问题,麻烦大家看看

当我把ds 设置成为了 b800h 也就是显示缓冲区的起始地址的时候

mov bx,0
mov ,'h'

写完之后 我用debug跟踪 ,d命令查看b800:0 的内存,b800:0的内容结果不是'h'的 ascii 码

但是当我 把ds设置为ffffh之后, 同样写入的时候, ffff:0却是 'h'的 ascii码。

这是为什么呢???求解。





monk-half 发表于 2013-7-12 10:35:30

楼主B800段在显示缓冲区中也就是说 里面的数据在每Debug一次就更改一次你存进去的数据在Debug下寿命只有一条指令的时间长度   例如 此时你刚执行完数据存入的指令 然后要用d命令查看是否存入 可是当你敲下d命令的时候 显示器为了给你一个反馈把显示缓冲区的数据又进行了一次改写   
所以 楼主的发生问题的原因应该是 数据被覆盖了

Dardy 发表于 2013-7-12 15:22:07

段地址需要是16的整倍数
b800 不符合这要求,你可进一步测试下它是怎么修正的。

团鱼之徒 发表于 2013-7-12 18:39:02

{:7_155:}.............

jjaicx 发表于 2013-7-13 19:06:50

monk-half 发表于 2013-7-12 10:35 static/image/common/back.gif
楼主B800段在显示缓冲区中也就是说 里面的数据在每Debug一次就更改一次你存进去的数据在Debug下寿命只 ...

你说的很有道理,我觉得 百分之99 是对的

shaodian87 发表于 2013-7-14 00:12:25

:funk:没有看懂啊菜B还得继续学习
页: [1]
查看完整版本: 做练习的时候发现的一个问题,麻烦大家看看