汇编语言第二版中,关于栈段的习题,将10000H~1FFFFH作为栈段,SS=1000H,求SP。注意这是在8086PC上,

栈的操作是以字为单位的。我不明白为什么SP=0,初使状态栈为空。那么SS:SP应该指向栈的最高地址的下一内存单元,也就是20000H,怎么算,SP应该等于10000H啊,但是SP是个偏移地址,只有16位,不会这么大啊。若SP=0,则SS:SP指向的是10000H,这也不是最高地址的下一内存单元啊,请懂的人赐教。

SS=1000H 若SP=0 则此时SS:SP指向10000H
经一次压栈后,SP自减2,SP=FFFEH,但是SS不会跟着减的,所以此时SS:SP指向1FFFEH处

也就是说SP应当等于10000H,但它没那么大,只好等于0000H,反正压栈之后0000H-2H和10000H-2H结果是一样的。懂了没有?
温馨提示:内容为网友见解,仅供参考
第1个回答  2011-06-19

是的
你哼聪明
第2个回答  2011-06-19
我记得 SS要左移2位的 ,记不不清啦。追问

SS要乘以16,再加上偏移地址,乘以16,等于16进制的左移1位

追答

哦,对,左移1位,呵呵 ,好久没搞8086,还在大学里学有,有一点点记忆。

追问

看了汇编,学校学的那些知识才有点眉目,SHIT,学校开的课都不注重学生的接收能力,什么都没教,直接讲接口技术与嵌入式,搞得我跟听天书一样

相似回答