说了你未必会懂 发表于 2011-7-17 10:19:05

关于栈的问题

本帖最后由 说了你未必会懂 于 2011-7-18 12:12 编辑

小甲鱼说栈里的数据取出后还存在,我就实验了下,我先将栈里的一个数据取出后放入ax中,我再用mov语句修改了sp回到存放那个数据的低位,然后在一次取出放入bx中,但bx中显示的却不是ax里的数据,怎么回事?

还有sp也应该算是偏移地址为什么不用jmp命令来修改,而用Mov命令?

弱人 发表于 2011-7-17 11:26:28

jmp是跳过去,可不是修改他的SP

嗜血丨灵异狂 发表于 2011-7-17 12:02:46

JMP是修改IP的值的不是修改SP的记住一个原则后进先出的顺序如果说先push ax   push bxpush cx
出的顺序是pop cx   popbx   popax   可能是你pop的时候反了 还是pop axpop bx   popcx所得到的结果肯定不一样了

说了你未必会懂 发表于 2011-7-17 13:00:22

嗜血丨灵异狂 发表于 2011-7-17 12:02 static/image/common/back.gif
JMP是修改IP的值的不是修改SP的记住一个原则后进先出的顺序如果说先push ax   push bxpush cx
出 ...

不是,我没有往栈里push数据,是原来的数据,我的意思是想证明栈里的某一个数据被取出后依然存在在那个栈中(小甲鱼视频里有说,当用pop取出数据后,那个数据依然存在在那个栈中)所以我自己试了下,比如我取了ss=1000,sp=fffc的一个数据放入ax中,当取完后sp自动加2也就是fffe,然后我用mov sp,fffc把指针回到我取那个数据的地方,再一次取那个值(因为按理论那个放入ax中的值还存在在栈中)放入bx中,我猜想的结果应该是bx=ax,但实际上里面的值不相等,不晓得为什么?

snow9312 发表于 2011-7-17 15:12:11

小甲鱼说的数据还在,是数据还在内存当中,但是你是没法看见的。(是物理上的存在,但是他允许你去覆盖它,所以就显示为不存在)

lichaonetuser 发表于 2011-7-17 21:21:32

说了你未必会懂 发表于 2011-7-17 23:15:04

lichaonetuser 发表于 2011-7-17 21:21 static/image/common/back.gif
不用那么纠结。你用D参数查看那个内存段(栈段)就可以了。你看看里面的数据就好了。

额,也对哦,我干嘛那么纠结呢……{:5_99:}

lichaonetuser 发表于 2011-7-17 23:37:50

页: [1]
查看完整版本: 关于栈的问题