关于栈和sp寄存器的一点疑问

书上说如果将10000H~1FFFFH作为栈段,当栈为空时,SP为0,SS为1000H,岂不是指向了10000H?字单元入栈之前,SP-2,指向FFFEH?(最近看王爽的... 书上说如果将10000H~1FFFFH作为栈段,当栈为空时,SP为0,SS为1000H,岂不是指向了10000H?字单元入栈之前,SP-2,指向FFFEH?(最近看王爽的汇编语言,小弟愚钝,请高手指教) 展开
 我来答
二了吧唧的我
2011-07-26 · TA获得超过176个赞
知道小有建树答主
回答量:149
采纳率:0%
帮助的人:113万
展开全部
额……咱只知道三十二位的esp、ebp……
ss是指向栈段的寄存器,一般和ebp栈底指针值相等;而计算机里面栈是从高向低增长的,所以ss和ebp如果按照这个栈的话都应该指向0x1FFFF,而初始状态如果是空栈的话,栈顶指针esp应该等于栈底指针ebp,所以空栈时esp=ebp=ss=0x1FFFF(当然三十二位系统里面ss只是一个指向段表的指示器,不是直接指向那个地址)。
当有字压栈的时候sub esp 2,esp应该指向0x1FFFD
追问
你说空栈时esp指向0x1FFFF,当有字压栈的时候sub esp 2,esp应该指向0x1FFFD ,那岂不是0x1FFFF没有存东西?
追答
不是啊,0x1FFFE和0x1FFFF里面存的是刚刚压栈的那个双字节
关于上次我的回答,不好意思确实有点问题,如果按照现实计算机中栈来看的话,esp一开始应该指向0x20000(尽管这个地址不属于当前栈段),这样才让压栈、esp指向在逻辑上都正确
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式