内存在没有压栈的时候,怎么会有数据
{:5_109:}因为你还没学到后面的中断,给你简单介绍一下吧,CPU有一个单步中断模式。就是每执行一条指令后,就会暂停下来。他有个中断过程:
(1)取得中断类型码1
(2)标志寄存器入栈,也就是pushf,同时TF、IF标志位设置为0(关键问题就在这儿哦,这里有个压栈的过程,压进去的值为标志寄存器的值)
(3)CS、IP入栈(注意:又有两个值压入栈了)
(4)IP=1*4,CS=1*4+2
总结一下,一次单步中断,至少压入了三个word数据,就是6个字节的数据。
t命令就是利用了单步中断,每一次单步中断,都要有压栈过程,所以你会发现栈里面多了不知道什么数据。
我也不说太详细了,后面你学到第12章就明白啦。
参考文献:王爽.《汇编语言》.清华大学出版社.2008.4.249
程序:mov ax,2000
mov ss,ax
mov sp,0010
mov ax,3123
push ax
mov ax,3366
push ax
在dubug中首先修改了 2000:0 f 16个字节都为0
lukelqz 发表于 2012-12-12 12:57 static/image/common/back.gif
因为你还没学到后面的中断,给你简单介绍一下吧,CPU有一个单步中断模式。
就是每执行一条指令后 ...
太详细了,感谢了啊 summerchencong 发表于 2012-12-12 18:02 static/image/common/back.gif
太详细了,感谢了啊
{:5_97:}问题解决的话,就设为已解决吧。 就是啊,楼主怎么不给分呢,光谢谢 共同努力学习,誓要坚持到最后。 那是正常现象, 往后面学会讲到。 简单的说我们一般说的删除数据是不可能真正的把它抹去 而我们平时的写入(或压栈) 只是CPU对给出的某段内存进行覆盖 那段内存到底存有什么东西 CPU是不管得 只要往后面学就很容易明白 。 简_单 发表于 2012-12-18 01:06 static/image/common/back.gif
那是正常现象, 往后面学会讲到。 简单的说我们一般说的删除数据是不可能真正的把它抹去 而我们平时的写 ...
楼主正解,上面的中断解释不是正解
页:
[1]