鱼C论坛

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

看到汇编的3.12节 有点疑问

[复制链接]
发表于 2013-3-31 03:25:17 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
比如 栈只改变SP 那么空和满都是0 一直压入或者弹出 都是在这个栈断里面循环
为什么之前的节会提到溢出这个问题
是不是可以这么理解 如果定义的栈的大小不是64KB 而是小于64KB 也就是不足FFFF 那么就会形成溢出的问题
如果定义的栈大小刚好为FFFF按照3.12里面所说的循环 无论压入多少或者弹出多少 都说在这个栈段内循环
反而不会形成溢出的问题了?

又或者说之前章节提到超过FFFF的数据会变成0 进位CPU没有丢弃 而是保存到其他地方 当然 后面我还没看完 所以不知道保存到哪里去了
那么如果超过FFFF的时候 CPU是否会自动因为这个保存的进位 而自己改变SS的值导致溢出呢?
比如
空栈的时候 再POP CPU是否会自动这样改变 SS=SS+SP 然后SP=0?
满栈的时候 再PUSH CPU是否会自动这样改变 SS=SS-SP 然后SP=FFFF?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-31 09:56:05 | 显示全部楼层
貌似不是循环吧
如果是压入的话,压入的数据超过栈的长度,栈底的数据就会丢失,新的数据就会填充在顶部。
出栈的时候也一样,取到栈底,还继续取数据的话,就会把栈底下面的存储单元取出来。
貌似就系酱紫,不知有木有误人子弟
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-3-31 13:07:44 | 显示全部楼层
SS=SS+SP,SS=SS-SP :什么意思没看懂,不是-2或者+2的吗?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
 楼主| 发表于 2013-3-31 20:50:20 | 显示全部楼层

因为溢出了 比如+2 +2 一直+到FFFF 在+2 就会变成0001 实际上是进位了
前面的教程说进位CPU不会丢弃 会保存  那么进位了是不是SS就进位了 然后SP就回到最小值了 所以是SS=SS+SP SP=0
如果是减 也就是压入溢出了
所以是SS-SP SP=FFFF
这样才会导致溢出
如果进位丢弃或者进位不做处理
那么无论是压入还是弹出 SS始终不变  SP 在0000-FFFF内循环 这样的话只会导致覆盖 而不会溢出了..

所以才有疑问 如果是压入过多或者弹出过多 到底是溢出呢 还是循环呢?
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-1 10:26:44 | 显示全部楼层
大男人 发表于 2013-3-31 20:50
因为溢出了 比如+2 +2 一直+到FFFF 在+2 就会变成0001 实际上是进位了
前面的教程说进位CPU不会丢弃 会保 ...

溢出不溢出那都是后面章节说的了。它们只是16位的保存不了进位的所以FFFE+2=0000了
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-1 11:33:43 | 显示全部楼层
我也是,啊啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
发表于 2013-4-1 11:43:50 | 显示全部楼层
我也是,啊啊
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

GMT+8, 2024-11-17 20:27

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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