8086内存空间的一个段的最大为多少?
由于SP的变化范围为0000H~FFFFH,()其中需要注意的一点是,当栈满的时候,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(十六进制)
Copyright © 广州京杭网络科技有限公司 2005-2025 版权所有 粤ICP备16019765号
广州京杭网络科技有限公司 版权所有