【汇编语言】第三章----寄存器(内存访问)(十)—— 栈段以及对栈和段分别进行综述-2. 问题一以及分析与解答

时间:2024-10-23 11:29:22

问题:

如果将10000H-1FFFFH这段空间当作段,初始状态是空的,此时,SS=1000H,SP=?

思考后看分析。

分析与解答:

如果将10000H-1FFFFH这段空间当作栈段,SS=1000H,空间为64KB,栈最底部的字单元地址为1000:FFFE。任意时刻,SS:SP指向栈顶单元,当栈中只有一个元素的时候,SS=1000H,SP=FFFEH。栈为空,就相当于栈中唯一的元素出栈,出栈后,SP=SP+2。

SP原来为FFFEH,加2后SP=0,所以,当为空的时候,SS=1000H,SP=0(之前的内容讲过,由于该寄存器只能存储16位数据,因此在这里加上2之后为10000H,然后会舍去最前面的1,得到SP=0000H)。

换个角度看,任意时刻,SS:SP指向栈顶元素,当栈为空的时候,栈中没有元素,也就不存在栈顶元素,所以SS:SP只能指向栈的最底部单元下面的单元,该单元的地址为栈最底部的字单元的地址+2。栈最底部字单元的地址为1000:FFFE,所以栈空时,SP=0000H。