SP=0时,到底是栈空还是栈满?
首先,如果一个栈段是从10000到1FFFF。假设一:
栈中只有一个字,那么这个字的偏移地址是FFFE,SP=FFFE,此时来一个pop操作,栈变为空,那么SP+2,sp=0。
所以,第一个观点,如果一个栈段是从10000到1FFFF,且为空栈,那么sp=0。
假设二:
栈中只有一个元素,那么sp=FFFE,这时不断地PUSH,每PUSH一次sp-2,那么当栈满时,SP=0。
所以,第二个观点,如果一个栈段如果一个栈段是从10000到1FFFF,而且已经满了,那么SP=0。
Now the problem arises.
到底sp=0,是栈满还是栈空???
本帖最后由 小人 于 2014-11-18 01:31 编辑
sp位16位 他没法指向10000h 说以进位被掐了 所以是sp=0
{:5_109:} sp=0你可以看做空也可以看做满 看你怎么操作
sp=0sp-2 sp=FFFEH
sp=0sp+2 sp=0002H
从10000到1FFFF这种栈段比较特殊 如果是10000~1000F的话栈空的时候 SP=10
这种1FFFF栈空和栈满SP都等于0 因为1FFFF的下面超了范围了 跑到20000段了 所以还是认为SP=0 我是小鱼丝 发表于 2014-11-18 12:00
从10000到1FFFF这种栈段比较特殊 如果是10000~1000F的话栈空的时候 SP=10
这种1FFFF栈空和栈满SP都 ...
也就是说如单说SP=0,无法确定栈是空还是满。 小人 发表于 2014-11-18 09:36
sp=0你可以看做空也可以看做满 看你怎么操作
sp=0sp-2 sp=FFFEH
sp=0sp+2 sp=0002H
懂了,单从一个SP=0,无法判断。我的理解对否? yy57 发表于 2014-11-28 15:48
也就是说如单说SP=0,无法确定栈是空还是满。
对的呵呵!
页:
[1]