汇编基础学习7

文章地址 http://www.mcany.cn/article/282.htm

博主 没落的残阳

 

这节来讲解一下栈的延伸,“堆栈”。算是把昨天的整个理论基础概念,给大家讲解下。

   运行时栈(RUNTIME stack)--我们通常称为“堆栈”,这是由我们cpu硬件直接支持的,也是实现过程的调用和过程返回机制的基本组成部分。

    不知道大家是否知道RTL是什么意思。如果学过程序的人都应该知道这个就是运行时库,它是我们程序运行时必须的库。例如我们BCB中的VCL RTL。我们的bcb程序必须依赖vcl的运行时库。
    
    堆栈是由我们cpu直接管理的内存区域(也可以形容其数组,因为它的确有相似数组的特性)。其实大家昨天已经感受到了堆栈的特性。就是“后进先出,向下扩展”的特性。

    
堆栈的用途:

1.寄存器在用做多种用途的时候,堆栈可以方便的作为临时保存区域。在寄存器使用完毕后,可恢复其原始值。
2.调用子程序的时候放过(注:同放入。)程返回的地址。

3.子程序的局部变量在堆栈中创建,结束时,变量丢弃

4.调用子程序的时候,可以通过堆栈传输输入值。


昨天已经讲解了push pop指令。
push 压栈  相应的esp寄存器-4,如果是实模式-2
pop  出栈  相应的esp寄存器+4,如果是实模式+2

从以上我们就可以认识到堆栈的向下扩展的特性。因为压入堆栈,相应的esp减少,那么表示我们的堆栈往下扩展。


今天还要介绍两个与堆栈相关的汇编指令。pushad popad pusha popa

  pushad是将我们所有的32位通用寄存器压入堆栈,popad则是将我们所有的32位通用寄存器按压入时候相反的顺序取出堆栈。一般用于子程序保存但前(当前)的环境,例如我们的子程序需要修改一些寄存器的值,我们就可以用这个先保存,等子程序结束后,将其所有的备份的寄存器值在恢复,这样就不会破坏其他子程序运行的情况。
  
  这两个指令,在免杀方面比较常用。相信看过免杀课程动态恢复数据段ASCII字符串的朋友都应该知道。

pusha是将我们所有的16位通用寄存器压入堆栈,popa同理是将我们所有的16通用寄存器取出堆栈。


由于今天主要是为了把上节课程做一个补充的,所有的内容就这么多。堆栈到这里我们基本就讲解完了。其实我们只要理解了它的特性即可。。

源码地址: https://pan.quark.cn/s/a4b39357ea24 欧姆龙触摸屏编程软件MPTST 5.02是专门为欧姆龙品牌的工业触摸屏而研发的编程解决方案,它赋予用户在直观界面上构建、修改以及排错触摸屏应用程序的能力。 该软件在工业自动化领域具有不可替代的地位,特别是在生产线监视、设备操控以及人机互动系统中发挥着核心作用。 欧姆龙MPTST(Machine Process Terminal Software Touch)5.02版本配备了多样化的功能,旨在应对不同种类的触摸屏项目要求。 以下列举了若干核心特性:1. **图形化编程**:MPTST 5.02采用图形化的编程模式,允许用户借助拖拽动作来设计屏幕布局,设定按钮、滑块、指示灯等组件,显著简化了编程流程,并提升了工作效率。 2. **兼容性**:该软件能够适配欧姆龙的多个触摸屏产品线,包括CX-One、NS系列、NJ/NX系列等,使用户可以在同一个平台上完成对不同硬件的编程任务。 3. **数据通信**:MPTST 5.02具备与PLC(可编程逻辑控制器)进行数据交互的能力,通过将触摸屏作为操作界面,实现生产数据的显示与输入,以及设备状态的监控。 4. **报警与事件管理**:软件中集成了报警和事件管理机制,可以设定多种报警标准,一旦达到预设条件,触摸屏便会展示对应的报警提示,助力操作人员迅速做出响应。 5. **模拟测试**:在设备实际连接之前,MPTST 5.02支持用户进行脱机模拟测试,以此验证程序的正确性与稳定性。 6. **项目备份与恢复**:为了防止数据遗失,MPTST 5.02提供了项目文件的备份及还原功能,对于多版本控制与团队协作具有显著价值。 7. **多语言支持**:针对全球化的应...
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值