鱼C论坛

 找回密码
 立即注册
查看: 1850|回复: 6

64k的栈问题

[复制链接]
发表于 2013-10-22 10:47:54 | 显示全部楼层 |阅读模式
1鱼币
一个64k的栈全部出栈的话。sp=0。如果再入栈的话sp=sp-2等于-2。它指向栈最底部吗。那-2指向ffffh吗?书上说是循环入栈。不懂啊?请指教。


最佳答案

查看完整内容

当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,从栈空时 ...
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 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

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-22 11:31:46 | 显示全部楼层
是指向FFFDH,因為0H-2H=FFFEH(16位)
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-22 12:09:12 | 显示全部楼层
入栈和出栈不改变栈段的段地址
因为段地址不变,只有SP改变,所以0H-2H=FFFEH(16位),因此被认为是循环
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-10-23 16:53:36 From FishC Mobile | 显示全部楼层
多谢。有大家真好。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2013-10-23 16:56:36 From FishC Mobile | 显示全部楼层
问题解决了。鱼币咋给人啊。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2013-10-23 23:29:36 | 显示全部楼层
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-9-28 21:28

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表