DSFEF 发表于 2022-3-11 18:44:34

实验5关于sp为什么书上是16的疑问

搞不懂实验5的第一小题,代码段的sp那一步,为什么sp是16呢?数据段占了8个字,后边的栈段也占了8个字,不是应该sp为32吗?求大神解答疑惑

凡得友 发表于 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那里。

snrjtg1 发表于 2022-3-11 20:21:09

sp是栈段的指针呀,跟数据段没关系。栈段就是你定义的stack.

jackz007 发表于 2022-3-11 21:24:03

本帖最后由 jackz007 于 2022-3-11 23:41 编辑

stack segment
    dw 0,0,0,0,0,0,0,0
stack ends
    正是这条指令定义了堆栈段的大小为 16 个字节,因为分配存储空间使用的是 dw 伪指令,这就意味着其后面的每一个 0 在编译时都会成为一个字,而一个字是两个字节,8 个字恰好就是 16 个字节。

jie杰 发表于 2022-6-15 21:03:09

因为栈段和数据段不是一个段啊,所以数据段偏移地址为0-15,栈段偏移地址也为0-15
页: [1]
查看完整版本: 实验5关于sp为什么书上是16的疑问