谈谈我的想法:
首先,栈的基址是由SS决定的,而SS肯定是16的倍数;
然后,由SP决定栈顶的位置,其值的范围是0000~FFFF,在初始的时候,SP可以取当中任意一个值,当SP=0000时,这个栈的空间达到最大64KB。当0<SP<=FFFF时,SP越大,说明栈的空间越大,SP越小则栈的空间越小。因为,假设不停的PUSH,使得SP不停的-2,减到最后肯定会接近0000,所以,SP越大,栈空间越大,因为可以减的次数多。解释一下为什么SP=0000时,栈的空间达到最大64KB。因为只有
0000H-0002H=FFFEH;或者这样想,假设这个大小为64KB的栈中有最后一个元素,那么此时SP=FFFE,执行POP,弹出这最后一个元素,则SP需要+2,有FFFE+2=10000,而SP是一个16字节的数,只能表达为0000. |