由于SP的变化范围为0000H~FFFFH,(H表示16进制数)
其中需要注意的一点是,当栈满的时候,SP=0000H (由于8086压栈是由高地址端(FFFFH)到低地址端(0000H),SP不断减小),继续压栈,SP溢出(不会影响SS),将会让SP从FFFFH端向0000H端环绕,能够覆盖之前的值,也就是绝对地址最大范围也就和SP的最大范围相同
SP可以指向的每个单元大小对应1Byte(这个单元大小和SP变化范围无关),由SP的变化范围可知SP可表示为16位二进制数,最大容量应该为
2^16 Byte=64KB
或者根据共有FFFFH+1个单元,
(FFFFH-0000H+1)*1 Bit=10000H(Byte)
=2^16 (Byte)
=64KB
绝对地址计算方法(其实和CS:IP的计算方法相同):
StackAddress=StackSegment*16+StackPointer;
其中*16可以表示为二进制数向左移动四位,对应16进制左移一位(加0)就可以了
StackAddress=100F0+01A1
=10291(十六进制)