鱼C论坛

 找回密码
 立即注册
查看: 3139|回复: 3

[已解决]第四章实验三中的一个小问题

[复制链接]
发表于 2020-7-22 05:10:14 | 显示全部楼层 |阅读模式

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

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

x

想问一下这里的这里红圈圈起来的地方为什么要先给sp赋值为0然后在加10呢?
为什么不能mov sp,10呢?希望有大佬帮小白解答一下疑惑谢谢啦!

                               
登录/注册后可看大图

最佳答案
2020-7-22 09:13:47
mov sp,0   是设置栈底地址为0。add sp,10  移动堆栈指针到10
若直接写 add sp,10 就变成了设置栈底地址为10
两者意义是不一样的。

若直接设置栈底,然后你就pop是会出错的,因为栈为空。

mov sp,0
add sp,10
这时栈不为空,是可以pop的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-7-22 05:11:31 | 显示全部楼层
图片传不上去就是
mov sp,0
add sp,10
这两句
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-7-22 09:13:47 | 显示全部楼层    本楼为最佳答案   
mov sp,0   是设置栈底地址为0。add sp,10  移动堆栈指针到10
若直接写 add sp,10 就变成了设置栈底地址为10
两者意义是不一样的。

若直接设置栈底,然后你就pop是会出错的,因为栈为空。

mov sp,0
add sp,10
这时栈不为空,是可以pop的
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-7-23 07:50:18 | 显示全部楼层
sunrise085 发表于 2020-7-22 09:13
mov sp,0   是设置栈底地址为0。add sp,10  移动堆栈指针到10
若直接写 add sp,10 就变成了设置栈底地址为 ...

明白了,谢谢大佬解释!
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-12-23 23:51

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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