在8086中定义一个堆栈段其空间最大为多大?
在8086中定义一个堆栈段其空间最大为多大?在8086cpu系统中若定义一个堆栈段其空间最大为多大?已知8086cpu中SS值为100F,SP值为1A1,此时堆栈指针指向...
在8086中定义一个堆栈段其空间最大为多大?在8086cpu系统中若定义一个堆栈段其空间最大为多大?已知8086cpu中SS值为100F,SP值为1A1,此时堆栈指针指向的绝对地址是多少?
展开
展开全部
由于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(十六进制)
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询