社区
汇编语言
帖子详情
关于堆栈操作指令的一点疑惑
iamroc
2004-11-09 08:36:28
书上是这样描述PUSH指令的:
进栈指令PUSH先使堆栈指针SP减2,然后把一个字操作数存入堆栈顶部。
PUSH r16/m16/seg; sp <- sp-2,SS:[SP] <- r16/m16/reg
为什么先减2呢?如果连续进栈的话,SP减2后就会回到老位置,所有数据不是都会覆盖到一起了吗。。
...全文
94
6
打赏
收藏
关于堆栈操作指令的一点疑惑
书上是这样描述PUSH指令的: 进栈指令PUSH先使堆栈指针SP减2,然后把一个字操作数存入堆栈顶部。 PUSH r16/m16/seg; sp <- sp-2,SS:[SP] <- r16/m16/reg 为什么先减2呢?如果连续进栈的话,SP减2后就会回到老位置,所有数据不是都会覆盖到一起了吗。。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
6 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
iamroc
2004-11-09
打赏
举报
回复
哦,那就很清楚了,谢谢各位
flyingcar
2004-11-09
打赏
举报
回复
stack分为递增和递减速两类
进栈时,8086的stack是指针往下减的,51是递增
iamroc
2004-11-09
打赏
举报
回复
按flyingcar(mhc) 的说法,栈顶是低地址,栈底是高地址喽?
iamroc
2004-11-09
打赏
举报
回复
??不明白
栈底应该是低地址,栈顶应该是高地址,我想象中的进栈操作应该是先进栈,然后SP+2;出栈是先减2,然后出栈
不应该是这样吗?
Areslee
2004-11-09
打赏
举报
回复
不论先减后减,都无论避免这个问题
flyingcar
2004-11-09
打赏
举报
回复
1,sp用于指示出stack顶部在RAM中的位置;
2,sp的初始值一般时最大值(如果stack是递减的话),所以减2后不会回到老位置的.
例如: RAM的大小的256byte.程序初始化时通常给sp赋值0xff
关于汇编语言中PUSH和POP
指令
的一个小结
...PUSH和POP
指令
都是对ss
堆栈
段的
操作
,ss中存放的是段基址,sp指针存放的是偏移地址。注意入栈出栈
操作
都是以 字 为单位(也就是2字节,16位)。 下面贴几张比较详细的截图: 首先从下面这张...
关于代码重定位的
疑惑
解答
转载看雪上的一个讨论 问: 在罗聪的网站(当然在很多地方都能...对这句代码我有
一点
疑惑
是这样的,call执行的
操作
应当是将call的下一条
指令
(在此处即为"popebx")的地址压入
堆栈
,然后jmp到nStart,之后执行popeb...
操作
系统学习常见
疑惑
问与答[接口规范部分]
操作
系统学习常见
疑惑
问与答[接口规范部分]—问题1- 4 这里讨论的
操作
系统是指基于IA构架80386以上CPU的
操作
系统,并不包括其他计算机构架之上的
操作
系统或嵌入式
操作
系统。1、问:
操作
系统如何能够开始控制一台...
操作
系统学习常见
疑惑
问与答
操作
系统学习常见
疑惑
问与答[接口规范部分] —问题1- 4 大三的时候已经学过了《
操作
系统原理》这门课,虽然学习过程中做过一些实验,但对
操作
系统的认识仍然停留在理论的层面上,对于如何才能...
linux内核进程切换(二) -
堆栈
切换
学习了
操作
系统的基本原理和调度的相关知识,开始学习进程的上下文切换,本章主要要了解一下内容: 用户级和内核级上下文切换的原理 前面章节学习了进程由哪些部分组成,那么进程自身的上下文切换有哪些部分组成了 ...
汇编语言
21,459
社区成员
41,601
社区内容
发帖
与我相关
我的任务
汇编语言
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
复制链接
扫一扫
分享
社区描述
汇编语言(Assembly Language)是任何一种用于电子计算机、微处理器、微控制器或其他可编程器件的低级语言,亦称为符号语言。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章