鱼C论坛

 找回密码
 立即注册
查看: 1895|回复: 8

内存在没有压栈的时候,怎么会有数据

[复制链接]
发表于 2012-12-12 10:47:01 | 显示全部楼层 |阅读模式
1鱼币
p.JPG

最佳答案

查看完整内容

因为你还没学到后面的中断,给你简单介绍一下吧,CPU有一个单步中断模式。 就是每执行一条指令后,就会暂停下来。他有个中断过程: (1)取得中断类型码1 (2)标志寄存器入栈,也就是pushf,同时TF、IF标志位设置为0(关键问题就在这儿哦,这里有个压栈的过程,压进去的值为标志寄存器的值) (3)CS、IP入栈(注意:又有两个值压入栈了) (4)IP=1*4,CS=1*4+2 总结一下,一次单步中断,至少压入了三个word数 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2012-12-12 10:47:02 | 显示全部楼层
因为你还没学到后面的中断,给你简单介绍一下吧,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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-12 10:50:54 | 显示全部楼层
程序: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
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2012-12-12 18:02:33 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-12 19:49:45 | 显示全部楼层
summerchencong 发表于 2012-12-12 18:02
太详细了,感谢了啊

问题解决的话,就设为已解决吧。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-12 19:58:42 | 显示全部楼层
就是啊,楼主怎么不给分呢,光谢谢
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-17 23:40:40 | 显示全部楼层
共同努力学习,誓要坚持到最后。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-18 01:06:23 | 显示全部楼层
那是正常现象, 往后面学会讲到。 简单的说  我们一般说的删除数据是不可能真正的把它抹去   而我们平时的写入(或压栈) 只是CPU对给出的某段内存进行覆盖     那段内存到底存有什么东西 CPU是不管得       只要往后面学就很容易明白 。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2012-12-18 11:21:56 | 显示全部楼层
简_单 发表于 2012-12-18 01:06
那是正常现象, 往后面学会讲到。 简单的说  我们一般说的删除数据是不可能真正的把它抹去   而我们平时的写 ...

楼主正解,上面的中断解释不是正解
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-5-24 00:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表