出栈(释放栈)和引用栈内数据意义不等同,和嵌套有关系但不是等同关系,局部变量进栈操作,不是局部变量自动带有进栈指令。汇编语言后局部变量操作是包含进栈操作指令PUSH和栈内地址存储数据调用,出栈。
出栈(释放栈)和引用栈内数据意义不等同,和嵌套有关系但不是等同关系,局部变量进栈操作,不是局部变量自动带有进栈指令。汇编语言后局部变量操作是包含进栈操作指令PUSH和栈内地址存储数据调用,出栈。
2. 栈操作
【操作 3】 PUSH direct
功能:将源字节中的数据送入堆栈中,称为压栈或进栈。
说明:首先栈指针 SP 内容加 1,执行(SP)←(SP)+1,然后将直接地址(用 00H~FFH
形式表示的)单元中的内容送入新的 SP 所指向的堆栈单元中,执行((SP))←(direct)。
【例 2.2】 试分析指令的执行结果。
序号 指令
① MOV SP,#09H
② MOV DPTR,#1234H
③ PUSH DPL
④ PUSH DPH
解释操作过程:
第①条 SP 是符号,代表片内 SFR 地址 81H,即 SP=81H,(SP)=09H 后,其意义是
将片内 RAM 地址由 09H~7FH 区域设为堆栈空间。
第②条 (DPTR)=1234H,即(DPH)=12H,(DPL)=34H。
第③条 (SP1)←(SP0)+1=09H+1=0AH。
}
www.bzfxw.com
第 2 章 单片机指令系统及程序设计 ·35·
·35·
(SP1)=(0AH)←(DPL)=34H。
第④条 (SP2)←(SP1)+1=0AH+1=0BH。
(SP2)=(0BH)←(DPH)=12H。
执行结果:(0AH)=34H,(0BH)=12H,(SP)=0BH。
执行过程示意图如图 2.1 所示。
12H
34H
0BH
0AH
09H
82H
81H
83H 12H
34H
09H
DPL
SP
DPH
栈底
③2
④2
④1
③1
图 2.1 进栈示意图
注意:PUSH 指令的执行过程中实际隐含着一个数据堆栈,且将堆栈作为目的地址。
【操作 4】 POP direct
功能:将堆栈中的数据送入目的字节中,称为弹栈或出栈。
说明:先读出由栈指针 SP 寻址的片内 RAM 单元内容送到指定的直接寻址字节,然后
栈指针 SP 减 1,即执行操作为(direct)←((SP)),(SP)←(SP)-1。
【例 2.3】 试分析指令的执行结果。
序号 指令
① MOV SP,#32H
② MOV 31H,#23H
③ MOV 32H,#01H
④ POP DPH
⑤ POP DPL
解释操作过程:
第①条 (SP)=32H。
第②条 片内 RAM 地址 31H 的内容为 23H,即(31H)=23H。
第③条 (32H)=01H。
第④条 (DPH)←((SP0))=(32H)=01H;然后(SP1)←(SP0)-1=32H-1=31H。
第⑤条 (DPL)←((SP1))=(31H)=23H;然后(SP2)←(SP1)-1=31H-1=30H。
执行结果:(DPTR)=(DPH)(DPL)=0123H,(SP)=30H。
执行过程示意图如图 2.2 所示。
标准分享网 www.bzfxw.com 免费下载
www.bzfxw.com
·36· 单片机原理及应用
·36·
01H
23H
32H
31H
30H
82H
81H
83H 01H
23H
32H
DPL
SP
DPH
栈底
⑤1
④2
④1
⑤2
图 2.2 出栈操作过程
注意:POP 指令的执行过程中实际隐含着一个数据堆栈,且将堆栈作为源地址。
出栈(释放栈)和引用栈内数据意义不等同,和嵌套有关系但不是等同关系,局部变量进栈操作,不是局部变量自动带有进栈指令。汇编语言后局部变量操作是包含进栈操作指令PUSH和栈内地址存储数据调用,出栈。相关推荐
- 【汇编语言与计算机系统结构笔记09】程序栈,(x86-32)过程调用,栈帧,寄存器使用惯例
本次笔记内容: 10.栈与过程调用的机器表示-1 11.栈与过程调用的机器表示-2 12.实验 文章目录 前言 x86-32的程序栈 压栈操作 出栈操作 过程调用 基于栈的编程语言 栈帧 x86-32 ...
- 无法打开内核设备“\.\VMCIDev\VMX”: 操作成功完成。是否在安装 VMware Workstation 后重新引导? 模块“DevicePowerOn”启动失败。 未能启动虚拟机。
文章目录 问题一:无法打开内核设备"\\.\VMCIDev\VMX": 操作成功完成.是否在安装 VMware Workstation 后重新引导? 问题二:win10安装虚拟机提 ...
- 图像形态学(opencv),运行后通过在屏幕上输入对应指令完成相对应的形态学方法。
图像形态学 1.开操作(MORPH_OPEN) 结果图类似腐蚀图 先腐蚀后膨胀的过程,开操作可以帮助消除图像中的小的干扰区域,并且在平滑较大物体的边界的同时不明显改变其面积. 2.闭操作(MORPH_ ...
- 《汇编语言》第10章 call和ret指令
call和ret指令都是转移指令,经们都修改IP,或同时修改CS和IP.它们经常被共同用来实现子程序的设计.这一章,我们讲解call和ret指令的原理. 10.1 ret和retf ret指令用栈中的 ...
- 栈帧与操作数栈剖析及符号引用与直接引用的转换
我们知道在Java中异常处理有两种方式,一种是try...catch...一下,这个在上一次[https://www.cnblogs.com/webor2006/p/9706466.html]中已经进 ...
- java 常量区存放 new_java---堆、栈、常量池的存储数据
说到Java中堆.栈和常量池,首先还是看看他们各自存放的数据类型吧! 栈: Java的JVM的内存可分为3个区:堆(heap).栈(stack)和方法区(method)也叫静态存储区. 堆区:(存放所 ...
- git介绍,安装(手把手),命令与使用(包含IDEA操作,github,gitee的万字图文详述)
目录 1.Git 1.1 概述 1.2.版本控制 1.3 版本控制工具 1.3.1 集中式版本控制工具 1.3.2 分布式版本控制工具 1.4 Git简史 1.5 Git 工作机制 1.6 Git 和 ...
- VBA字符串操作:从右向左截取特定分隔符后的内容
@VBA字符串操作:从右向左截取特定分隔符后的内容 熟悉EXCEL函数的朋友遇到截取字符串的时候第一个想到的肯定是FIND(). LEN() .LEFT().**RIGHT()**这一套操作, 但很遗 ...
- 为什么快捷指令无法将媒体转换为文本_CAD一些操作技巧(快捷键)
做工程的经常用到CAD软件,怎么才能用的又好又快,一些必备的操作快捷键以及常见问题解决方法值得收藏: 首先是一些快捷键: 1.创建直线的快捷方式是L+空格 2.创建圆的快捷方式是C+空格 3.创建圆弧 ...
最新文章
- 30分钟内让你明白正则表达式是什么,并对它有一些基本的了解(二)
- 一个简单的汇编报时小闹钟
- 一种缘于积木游戏的思维
- ios JSON 解析流程(转)
- 【ABAP】Cross client master/business data transfer guide(ALE I Doc)
- wav文件头字节数和文件实际字节不一致_18道MySQL经典面试题及答案,8分钟看完,你会有不一样的收获...
- Git(9)-diff
- Elasticsearch--Docker安装kibana---全文检索引擎ElasticSearch工作笔记003
- linux 两台设备网桥配置6,linux2.6内核网桥分析
- DRILLNET 2.0------第二十三章 井控压井单模型
- Java全套课程修炼之Java小白入门篇
- 在线微信公众号调查数据分析报告
- window10家庭版安装docker记录
- 安利几款软件给需要的你
- rebar3简单使用
- 流量管制-令牌桶与漏桶
- SSRF 攻击PHP-FPM(FastCGI 攻击):学习总结仅供参考
- JavaFX实现学生成绩管理系统(综合实践大作业)
- 中建二测线上测评、笔试
- Coggle 30 Days of ML - 糖尿病遗传风险检测挑战赛
热门文章
- Cisco Packet Tracer中的基础命令操作以及组织网络实验
- RK3399平台开发系列讲解(内核驱动外设篇)6.3、RK3399平台增加红外接收功能
- 计算机室内设计 cad 论文,cad室内设计 毕业论文
- 做BI开发,为什么一定要熟悉行业和企业业务?
- iphone扫描文件图片转为文字,苹果x手机图片转文字,苹果手机jpg转换成word,ipad怎么把图片转化成文字
- 基于Pytorch迁移学习+集成学习的水果霉变区分设计与实现
- ae合成设置快捷键_ae怎么改颜色?ae怎么更改视频中的颜色?
- 计算机水冷科学吗,差价一倍的水冷性能究竟差多少?真相让你大吃一惊!
- 【毕业设计】 树莓派寝室宿舍门禁刷卡系统 - 物联网 单片机 嵌入式
- 用JAVA编写简易计算器界面