出栈(释放栈)和引用栈内数据意义不等同,和嵌套有关系但不是等同关系,局部变量进栈操作,不是局部变量自动带有进栈指令。汇编语言后局部变量操作是包含进栈操作指令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和栈内地址存储数据调用,出栈。相关推荐

  1. 【汇编语言与计算机系统结构笔记09】程序栈,(x86-32)过程调用,栈帧,寄存器使用惯例

    本次笔记内容: 10.栈与过程调用的机器表示-1 11.栈与过程调用的机器表示-2 12.实验 文章目录 前言 x86-32的程序栈 压栈操作 出栈操作 过程调用 基于栈的编程语言 栈帧 x86-32 ...

  2. 无法打开内核设备“\.\VMCIDev\VMX”: 操作成功完成。是否在安装 VMware Workstation 后重新引导? 模块“DevicePowerOn”启动失败。 未能启动虚拟机。

    文章目录 问题一:无法打开内核设备"\\.\VMCIDev\VMX": 操作成功完成.是否在安装 VMware Workstation 后重新引导? 问题二:win10安装虚拟机提 ...

  3. 图像形态学(opencv),运行后通过在屏幕上输入对应指令完成相对应的形态学方法。

    图像形态学 1.开操作(MORPH_OPEN) 结果图类似腐蚀图 先腐蚀后膨胀的过程,开操作可以帮助消除图像中的小的干扰区域,并且在平滑较大物体的边界的同时不明显改变其面积. 2.闭操作(MORPH_ ...

  4. 《汇编语言》第10章 call和ret指令

    call和ret指令都是转移指令,经们都修改IP,或同时修改CS和IP.它们经常被共同用来实现子程序的设计.这一章,我们讲解call和ret指令的原理. 10.1 ret和retf ret指令用栈中的 ...

  5. 栈帧与操作数栈剖析及符号引用与直接引用的转换

    我们知道在Java中异常处理有两种方式,一种是try...catch...一下,这个在上一次[https://www.cnblogs.com/webor2006/p/9706466.html]中已经进 ...

  6. java 常量区存放 new_java---堆、栈、常量池的存储数据

    说到Java中堆.栈和常量池,首先还是看看他们各自存放的数据类型吧! 栈: Java的JVM的内存可分为3个区:堆(heap).栈(stack)和方法区(method)也叫静态存储区. 堆区:(存放所 ...

  7. 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 和 ...

  8. VBA字符串操作:从右向左截取特定分隔符后的内容

    @VBA字符串操作:从右向左截取特定分隔符后的内容 熟悉EXCEL函数的朋友遇到截取字符串的时候第一个想到的肯定是FIND(). LEN() .LEFT().**RIGHT()**这一套操作, 但很遗 ...

  9. 为什么快捷指令无法将媒体转换为文本_CAD一些操作技巧(快捷键)

    做工程的经常用到CAD软件,怎么才能用的又好又快,一些必备的操作快捷键以及常见问题解决方法值得收藏: 首先是一些快捷键: 1.创建直线的快捷方式是L+空格 2.创建圆的快捷方式是C+空格 3.创建圆弧 ...

最新文章

  1. 30分钟内让你明白正则表达式是什么,并对它有一些基本的了解(二)
  2. 一个简单的汇编报时小闹钟
  3. 一种缘于积木游戏的思维
  4. ios JSON 解析流程(转)
  5. 【ABAP】Cross client master/business data transfer guide(ALE I Doc)
  6. wav文件头字节数和文件实际字节不一致_18道MySQL经典面试题及答案,8分钟看完,你会有不一样的收获...
  7. Git(9)-diff
  8. Elasticsearch--Docker安装kibana---全文检索引擎ElasticSearch工作笔记003
  9. linux 两台设备网桥配置6,linux2.6内核网桥分析
  10. DRILLNET 2.0------第二十三章 井控压井单模型
  11. Java全套课程修炼之Java小白入门篇
  12. 在线微信公众号调查数据分析报告
  13. window10家庭版安装docker记录
  14. 安利几款软件给需要的你
  15. rebar3简单使用
  16. 流量管制-令牌桶与漏桶
  17. SSRF 攻击PHP-FPM(FastCGI 攻击):学习总结仅供参考
  18. JavaFX实现学生成绩管理系统(综合实践大作业)
  19. 中建二测线上测评、笔试
  20. Coggle 30 Days of ML - 糖尿病遗传风险检测挑战赛

热门文章

  1. Cisco Packet Tracer中的基础命令操作以及组织网络实验
  2. RK3399平台开发系列讲解(内核驱动外设篇)6.3、RK3399平台增加红外接收功能
  3. 计算机室内设计 cad 论文,cad室内设计 毕业论文
  4. 做BI开发,为什么一定要熟悉行业和企业业务?
  5. iphone扫描文件图片转为文字,苹果x手机图片转文字,苹果手机jpg转换成word,ipad怎么把图片转化成文字
  6. 基于Pytorch迁移学习+集成学习的水果霉变区分设计与实现
  7. ae合成设置快捷键_ae怎么改颜色?ae怎么更改视频中的颜色?
  8. 计算机水冷科学吗,差价一倍的水冷性能究竟差多少?真相让你大吃一惊!
  9. 【毕业设计】 树莓派寝室宿舍门禁刷卡系统 - 物联网 单片机 嵌入式
  10. 用JAVA编写简易计算器界面