call和ret指令都是转移指令,它们都修改偏移地址或同时修改段地址和偏移地址。ret指令用栈中的数据,修改偏移地址,从而实现近转移。call可以通过位移和目的地址进行转移。下面来通过汇编代码学习一下call和ret指令的配合使用。

下面来看一下程序刚加载时栈的情况,对应16个00

程序对应的机器指令

下面来debug一下。

刚开始IP指向栈顶,SP=0010。执行了CALL 0013之后,SP=000E,这就是执行了压栈操作,此时栈中的数据为0E 00。压栈时候的IP=000B,压栈的时候压的是当前指令的下一个指令,所以是0E 00。

上面是ret指令结束后,SP=0010,IP=000E表明进行pop操作,修改了IP。指令又转到了call 指令的下一个指令。

汇编中的call和ret指令相关推荐

  1. 汇编 第十章 call和ret指令

    第十章 call和ret指令 call和ret指令都是转移指令,它们都能修改ip,或同时修改cs和ip 10.1 ret和retf 1.ret指令用栈中的数据,修改ip的内容,从而实现[近转移]CPU ...

  2. arm汇编lr pc b bl ret指令函数调用和返回gif动图演示

    文章目录 pc 寄存器 lr寄存器 (x30) ret返回指令 bl 跳转指令,带返回 b 跳转,不带返回 pc 寄存器 pc保存着当前指令执行的地址,相当于win32汇编里的eip寄存器 lr寄存器 ...

  3. call和ret指令_8086微处理器中的CALL和RET指令

    call和ret指令 8086微处理器中的CALL指令 (The CALL instruction in the 8086 microprocessor) The CALL instruction i ...

  4. ARM汇编中ldr伪指令和ldr指令(转载)

    转自:http://blog.csdn.net/ce123_zhouwei/article/details/7182756 ARM是RISC结构,数据从内存到CPU之间的移动只能通过L/S指令来完成, ...

  5. 汇编中的test和cmp指令[Z]

    首先看看:状态寄存器(即标志寄存器) PSW(Program Flag)程序状态字(即标志)寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成, 如下所示: 15   14    13 ...

  6. 【转】汇编中的test和cmp指令

    看过破解教程,都知道test,cmp是比较关键,可是我一直不清楚它们究竟是怎么比较的,最后下决心找了很多资料,和大家一起把它们弄清楚. 首先看看:状态寄存器(即标志寄存器) PSW(Program F ...

  7. win32汇编中伪指令addr和offset指令的区别

    一.相同点 1.addr 和 offset 操作符都是获得操作数的偏移地址: 2.addr 和 offset 的处理都是先检查处理的是全局还是局部变量,若是全局变量则把其地址放到目标文件中. 二.不同 ...

  8. 【汇编】汇编中的函数

    前言:本文章将讲解什么是函数,以及汇编中函数的存在形式,使用到的工具是DTDEBUG. 1.什么是函数?   在汇编中,函数就是一系列指令的合集,为了完成某个会重复使用的特定功能.         下 ...

  9. ARM汇编:汇编中proc、endp、ret、near、far指令用法

    ARM汇编:汇编中proc.endp.ret.near.far指令用法 子程序名 PROC NEAR ( 或 FAR ) -- ret 子程序名 ENDP (1)NEAR属性(段内近调用): 调用程序 ...

最新文章

  1. 28岁适合转嵌入式开发吗?
  2. 报名 | 2019年第六届清华大学大数据社会科学讲习班
  3. 小程序向Java传值,微信小程序 页面传值详解
  4. mvn 打包_Spark源码打包编译的过程
  5. ming window 交叉编译_如何在Linux for Windows上与MinGW交叉编译?
  6. 内网通不用软件改积分_软件项目为什么不能够如期交付?
  7. python airflow_airflow 简明指南
  8. Python入门:生成器并行(协程)
  9. 转移符 个人工作中使用记录一下
  10. [置顶] java高级工程师-----struts的内部运行机制详解
  11. 机器学习- 吴恩达Andrew Ng Coursera学习总结合集,编程作业技巧合集
  12. 快手滑块验证码分析 2022/03/17
  13. Facebook攻略--注册流程
  14. ReentrantLock原理及AQS(羊群效应+实操)
  15. VR系列——Oculus最佳实践:七、虚拟幻境头晕(下)
  16. 安装部署rabbitmq报错——已解决
  17. 关于抢红包的_关于抢红包的作文
  18. SUSE(Linux操作系统)
  19. Centos 桌面卡死解决办法,不关闭程序重启桌面
  20. 我的世界服务器如何制作武器,我的世界2B2T服务器玩家都会去做的7件事 第1件是游戏中的禁忌...

热门文章

  1. 微软开源!世界首个AI量化投资平台 Qlib 基本使用教程
  2. 程序包xxx不存在解决办法
  3. c# web版本,进销存和财务管理业务系统 ERP系统源码
  4. MATLAB教程笔记——B站台大郭彦甫
  5. PHP数据库分表查询
  6. 单机安装Hive和Zepplin
  7. 网站访问量和服务器带宽的关系
  8. PHP文件包含漏洞(利用phpinfo)复现
  9. H3C交换机常用命令(初学)
  10. 各种免费的在线小工具