momohei 发表于 2013-10-22 10:47:54

64k的栈问题

一个64k的栈全部出栈的话。sp=0。如果再入栈的话sp=sp-2等于-2。它指向栈最底部吗。那-2指向ffffh吗?书上说是循环入栈。不懂啊?请指教。


福禄娃娃 发表于 2013-10-22 10:47:55

本帖最后由 福禄娃娃 于 2013-10-22 12:28 编辑

    当SP=0时,此时再入栈,SP-2=FFFE,它肯定是进行借位操作了。当SP=FFFE时,此时再出栈,SP+2=10000,但是寄存器SP只能保存两个字节,所以进位1被抛弃,SP的值为0000,上面所说的“栈顶环绕”就是指由于寄存器位数的限制,如果栈空间0-FFFF中都已压入了内容,此时SP=0,如果再次进行入栈操作,SP=0000-0002=FFFE,此时原来存储在FFFE中的内容将会被覆盖,这就是所说的“栈顶将环绕”。
    栈的变化范围是 0 ~ FFFFH,从栈空时候的 SP = 0,一直压栈,直到栈满的时 SP = 0;
如果再次压栈,栈顶将环绕,覆盖原来栈中的内容。
所以一个栈段的容量最大为64KB

565123 发表于 2013-10-22 11:31:46

是指向FFFDH,因為0H-2H=FFFEH(16位)

随风听雨雪 发表于 2013-10-22 12:09:12

入栈和出栈不改变栈段的段地址
因为段地址不变,只有SP改变,所以0H-2H=FFFEH(16位),因此被认为是循环

momohei 发表于 2013-10-23 16:53:36

多谢。有大家真好。

momohei 发表于 2013-10-23 16:56:36

问题解决了。鱼币咋给人啊。

福禄娃娃 发表于 2013-10-23 23:29:36

momohei 发表于 2013-10-23 16:56 static/image/common/back.gif
问题解决了。鱼币咋给人啊。

选出最佳答案就行了
页: [1]
查看完整版本: 64k的栈问题