由於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-0000H+1)*1 Bit=10000H(Byte) =2^16 (Byte) =64KB
StackAddress=StackSegment*16+StackPointer;
StackAddress=100F0+01A1 =10291(十六進位制)
由於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(十六進位制)