汇编语言SP=SP-2是什么意思

SP=SP-2这个是什么意思,具体点,我的理解能力不是很强这个是不是一个公式?SP-2又是什么意思,是不是进栈一次就要-2我看其他人都是SP-4很多例子,在线等,高手来解... SP=SP-2 这个是什么意思,具体点,我的理解能力不是很强 这个是不是一个公式? SP-2又是什么意思,是不是进栈一次就要-2 我看其他人都是SP-4 很多例子,在线等,高手来解 展开
 我来答
zhxiufan
2015-10-09 · 知道合伙人软件行家
zhxiufan
知道合伙人软件行家
采纳数:14923 获赞数:38382
国家科技进步奖

向TA提问 私信TA
展开全部
SP=SP-2的意思是将堆栈地址减2。
汇编语言中本身是不会这样使用的,只是在描述诸如现场保护或中断服务的概念时介绍堆栈所起的作用,在中断服务程序结束,即执行到ret指令时,就会自动执行这条隐性指令,堆栈地址自动减2,将这两个存储单元中的地址复制给PC指针,程序返回到中断开始的地方继续运行。
flexxiaobo
2009-09-27
知道答主
回答量:45
采纳率:0%
帮助的人:0
展开全部
SP=SP-2,是指堆栈指针移动2个字节。不是一进站就要移动2个字节,这和你操作的数大小有关。如果你操作的书是字节型的(比如C语言中char型),那就只移动1个字节,即SP=SP-1;如果是双字节的(比如C语言中的int型),就是SP=SP-2;如果是四字节的(比如C语言中的float型的)就是SP=SP-4.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友016da43f0
2009-09-27
知道答主
回答量:5
采纳率:0%
帮助的人:8260
展开全部
sp是栈指针,在8086模式下都是以字为单位,压栈一次sp就减2,出栈一次sp就加2.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2009-09-27
展开全部
16位汇编:
PUSH 16位(寄存器/存储器) ; SP=SP-2
POP 16位(寄存器/存储器) ; SP=SP+2
SP是栈顶指针指示器(16位);

32位汇编:
PUSH 16位/32位(寄存器/存储器/立即数) ; ESP=ESP- 2/4
POP 16位/32位(寄存器/存储器/立即数) ; ESP=ESP+ 2/4
ESP是栈顶指针指示器(32位);

现在的程序都是32位的.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yky49
2009-09-27 · TA获得超过601个赞
知道答主
回答量:97
采纳率:0%
帮助的人:55.4万
展开全部
应该先了解一下什么是 “栈空间”对这个问题就不难理解了:
假设 一个栈段的长度是:10000---1FFFF,两个数相减等于 FFFF,首先需知道指向栈顶的SS:SP 指针所指向的地址是多少,因为栈顶总是指向栈空间最高单元的下一个单元。知道了SS:SP也就知道了栈空间的大小,即 SP-2 (减两个单元)如:SP=2E ,那么2E-2=2C,栈空间是 0000----2C, 共计 13个单元。
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式