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

内存中已经清零的数据为什么会变呢?

han2y 发布于 2010-12-12 22:48, 819 次点击
各位高手,下面的代码我想了好久也没有想出是什么原因,我明明把地址2000:0000  000f中的数据已经被清零了,为什么运行代码后,该地址中的数据却变了呢,这个问题让我天天吃不下饭,不知何故,请高手赐教。。。。
-a
0B30:0100 B80020        MOV     AX,2000
0B30:0103 8ED0          MOV     SS,AX
0B30:0105 BC1000        MOV     SP,0010
0B30:0108 B82331        MOV     AX,3123
0B30:010B 50            PUSH    AX
0B30:010C B86633        MOV     AX,3366
0B30:010F 50            PUSH    AX
-e 2000:0000 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
-d 2000:0000 f
2000:0000  00 00 00 00 00 00 00 00-00 00 00 00 00 00 00 00   ................
-r
AX=0000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B30  ES=0B30  SS=0B30  CS=0B30  IP=0100   NV UP EI PL NZ NA PO NC
0B30:0100 B80020        MOV     AX,2000
-t

AX=2000  BX=0000  CX=0000  DX=0000  SP=FFEE  BP=0000  SI=0000  DI=0000
DS=0B30  ES=0B30  SS=0B30  CS=0B30  IP=0103   NV UP EI PL NZ NA PO NC
0B30:0103 8ED0          MOV     SS,AX
-t

AX=2000  BX=0000  CX=0000  DX=0000  SP=0010  BP=0000  SI=0000  DI=0000
DS=0B30  ES=0B30  SS=2000  CS=0B30  IP=0108   NV UP EI PL NZ NA PO NC
0B30:0108 B82331        MOV     AX,3123
-d 2000:0 f
2000:0000  00 00 00 00 00 00 00 20-00 00 08 01 30 0B 94 05   ....... ....0...
-
这个代码是王爽编著的《汇编语言》第三章的实验任务中的问题。
8 回复
#2
zaixuexi2010-12-12 22:51
这个问题和中断有关的,书后面有讲到,慢慢学,别太着急.
#3
xiaomarn2010-12-13 20:08
AX=2000  BX=0000  CX=0000  DX=0000  SP=0010  BP=0000  SI=0000  DI=0000
DS=0B30  ES=0B30  SS=2000  CS=0B30  IP=0108   NV UP EI PL NZ NA PO NC
0B30:0108 B82331        MOV     AX,3123
-d 2000:0 f
2000:0000  00 00 00 00 00 00 00 20-00 00 08 01 30 0B 94 05   ....... ....0...
-
看标记的东西
堆栈初始化吧!
像ss和sp的设置只出现了MOV SS,AX 而MOV SP,10没出现,这是由于防止设置堆栈时出现中断(破坏堆栈建立),而关掉了中断,这两条指令是连续执行的
也不是很懂(94 05 我就不知是什么),求高手赐教!
(注意,数据都不在堆栈内)


[ 本帖最后由 xiaomarn 于 2010-12-13 20:13 编辑 ]
#4
han2y2010-12-13 20:34
首先谢谢各位了,楼上说的我视乎懂了些,但还是不太懂,还是慢慢学吧,等学完了就知道答案了。
#5
zaixuexi2010-12-13 23:52
LZ你好,能不能麻烦你把你debug下的d 0:0截个图给我看下,谢了,呵呵
#6
han2y2010-12-14 18:25
这是我d 0:0的截图:
只有本站会员才能查看附件,请 登录
#7
zaixuexi2010-12-14 20:09
好的,真是麻烦你了,能不能执行2次t命令再截张d 0:0d的图,因为数据会有变化,感谢
#8
han2y2010-12-15 22:56
只有本站会员才能查看附件,请 登录
#9
zaixuexi2010-12-16 09:37
上面那张图还是原来的d 0:0,就是希望您能先执行2次t命令,再给个d 0:0的图,因为int 1和int 3会产生变化,地址可能会和94 05有关,只是猜测,呵呵.
1