汇编栈为空时 ss:sp 为什么要使sp指向最低成子单元-2 在压入数据 sp+2 指向了栈底,但并未指向栈底向上
答案:5 悬赏:30 手机版
解决时间 2021-03-25 18:40
- 提问者网友:献世佛
- 2021-03-25 07:36
汇编栈为空时 ss:sp 为什么要使sp指向最低成子单元-2 在压入数据 sp+2 指向了栈底,但并未指向栈底向上
最佳答案
- 五星知识达人网友:不如潦草
- 2021-03-25 08:00
《汇编语言》第二版,书里的原话:
任意时刻,SS:SP指向栈顶元素,当栈为空的时候,栈中没有元素,也就不存在栈定元素,所以SS:SP只能指向栈的最底部单元下面的单元,该单元的偏移地址为栈最底部的字单元的偏移地址+2。
不知道你看懂了没
很好理解的
任意时刻,SS:SP指向栈顶元素,当栈为空的时候,栈中没有元素,也就不存在栈定元素,所以SS:SP只能指向栈的最底部单元下面的单元,该单元的偏移地址为栈最底部的字单元的偏移地址+2。
不知道你看懂了没
很好理解的
全部回答
- 1楼网友:长青诗
- 2021-03-25 12:19
我不会
- 2楼网友:西风乍起
- 2021-03-25 10:42
其实我只想说 这就是规定~~说多了我觉得没什么用
- 3楼网友:酒安江南
- 2021-03-25 09:38
应为 每次压栈出栈操作是以字为单位 所以每次操作要俩空间单元
- 4楼网友:英雄的欲望
- 2021-03-25 08:33
入栈的操作是先将 sp减2 再以 ss:sp 为地址存放数据
当栈为空时 栈中无数据 为了保证栈空间的利用 将Sp指向栈底的元素加二
比如说
stack segment
db 128 dup (0)
top db 0
stack ends
在这里 mov sp,offset top
就是把 top 给 sp
这样保证了 128个可用的字节空间
否则就只有126个可用
因为入栈先做 sp=sp-2;再进行操作,所以初始化的时候sp要加二追问在压入数据 sp-2 指向了栈底,但并未指向栈底向上的第2个单元
定义栈为空后,在压入第一个数据后 SS:SP并未指向栈底向上的第2个单元
栈不是按字来操作吗?(一个数据在栈中占两个字节)这样,数据存在栈底地址之外了 并未在站内(栈溢出) 不是吗?
我说的很绕口啊1追答
看看这图你就懂了
当栈为空时 栈中无数据 为了保证栈空间的利用 将Sp指向栈底的元素加二
比如说
stack segment
db 128 dup (0)
top db 0
stack ends
在这里 mov sp,offset top
就是把 top 给 sp
这样保证了 128个可用的字节空间
否则就只有126个可用
因为入栈先做 sp=sp-2;再进行操作,所以初始化的时候sp要加二追问在压入数据 sp-2 指向了栈底,但并未指向栈底向上的第2个单元
定义栈为空后,在压入第一个数据后 SS:SP并未指向栈底向上的第2个单元
栈不是按字来操作吗?(一个数据在栈中占两个字节)这样,数据存在栈底地址之外了 并未在站内(栈溢出) 不是吗?
我说的很绕口啊1追答
看看这图你就懂了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯