鱼C论坛

 找回密码
 立即注册
查看: 2681|回复: 4

[已解决]实验5关于sp为什么书上是16的疑问

[复制链接]
发表于 2022-3-11 18:44:34 | 显示全部楼层 |阅读模式
3鱼币
搞不懂实验5的第一小题,代码段的sp那一步,为什么sp是16呢?数据段占了8个字,后边的栈段也占了8个字,不是应该sp为32吗?求大神解答疑惑
QQ图片20220311175022.png
最佳答案
2022-3-11 18:44:35
stack segment
  dw 0,0,0,0,0,0,0,0
stack ends
意思是:以“字”为单位,定义了一个栈段,包含8个字,即16个字节。在内存中,它的偏移地址从0至15,所以,栈顶指针sp在16那里。

最佳答案

查看完整内容

stack segment dw 0,0,0,0,0,0,0,0 stack ends 意思是:以“字”为单位,定义了一个栈段,包含8个字,即16个字节。在内存中,它的偏移地址从0至15,所以,栈顶指针sp在16那里。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-11 18:44:35 | 显示全部楼层    本楼为最佳答案   
stack segment
  dw 0,0,0,0,0,0,0,0
stack ends
意思是:以“字”为单位,定义了一个栈段,包含8个字,即16个字节。在内存中,它的偏移地址从0至15,所以,栈顶指针sp在16那里。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-11 20:21:09 | 显示全部楼层
sp是栈段的指针呀,跟数据段没关系。栈段就是你定义的stack.
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-3-11 21:24:03 | 显示全部楼层
本帖最后由 jackz007 于 2022-3-11 23:41 编辑
  1. stack segment
  2.     dw 0,0,0,0,0,0,0,0
  3. stack ends
复制代码

    正是这条指令定义了堆栈段的大小为 16 个字节,因为分配存储空间使用的是 dw 伪指令,这就意味着其后面的每一个 0 在编译时都会成为一个字,而一个字是两个字节,8 个字恰好就是 16 个字节。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2022-6-15 21:03:09 | 显示全部楼层
因为栈段和数据段不是一个段啊,所以数据段偏移地址为0-15,栈段偏移地址也为0-15
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-25 08:17

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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