1 ret 和 retf

call 和 ret 指令都是转移指令,他们都修改ip,或同时修改cs和ip,他们经常被共同用来实现子程序的设计。

  1. ret:该指令用栈中的数据,修改ip的内容,从而实现近转移

    CPU执行ret指令时,进行下面两步操作
    (1) (IP)=((ss)*16+(sp))
    (2) (sp)=(sp)+2相当于:
    pop IP
    
  2. retf:该指令用栈中的数据,修改csip的内容,从而实现远转移

    CPU执行retf指令时,进行下面4步操作:
    (1) (IP)=((ss)*16+(sp))
    (2) (sp)=(sp)+2
    (3) (cs)=((ss)*16+(sp))
    (4) (sp)=(sp)+2相当于:
    pop IP
    pop CS
    

2 call 指令

call 标号(将当前的IP压栈后,转到标号处指令指令)

CPU 执行此种格式的call时,进行如下操作
(1) (sp)=(sp)-2((ss)*16+(sp))=(IP)
(2) (IP)=(IP)+16位位移“call 标号”时 相当于:
push IP
jmp near ptr 标号

汇编 CALL和RET指令相关推荐

  1. 汇编--call和ret指令

    CALL和RET指令: RET指令 ret指令:用栈中的数据修改IP,从而实现近转移.使用ret时,相当于pop IP. retf指令:用栈中的数据修改CS和IP,从而实现远转移.相当于 pop ip ...

  2. x86汇编_CALL和RET指令及过程调用嵌套_笔记_20

    CALL指令先把将来要返回的地址放入堆栈,再把即将被执行的过程的地址复制到指针寄存器上,当这个过程执行完要返回时,用RET指令将堆栈中存放的原来的地址放回指针寄存器上. CPU下一步执行哪些内容,是由 ...

  3. 汇编语言中RET指令的功能

    通常作为一个子程序的最后一条指令,用以返回到调用子程序的断点处,即从堆栈弹出断电送往ip和cs寄存器.

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

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

  5. CALL和RET指令---汇编学习笔记

    CALL和RET指令 call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP.它们经常被共同用来实现子程序的设计. 10.1 ret和retf ret指令用栈中的数据,修改IP的内容, ...

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

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

  7. 汇编中的call和ret指令

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

  8. 汇编语言笔记10-CALL和RET指令

    ☞模块化程序设计 模块化程序设计 汇编语言通过call和ret指令实现了模块化程序设计.可以实现多个相互联系.功能独立的子程序来解决一个复杂的问题. 子程序的框架 1 assume cs:code 2 ...

  9. 汇编学习--7.16--int指令

    int指令 中断信息可以来自CPU的内部和外部,当CPU的内部有需要处理的事情发生的时候,将产生需要马上处理的中断信息,引发中断过程. 上一章讲解了0号中断和单步中断,这一章将讲解另一种重要的内中断, ...

最新文章

  1. 您的连接不是私密连接
  2. 《软件构架实践》7-9章读后感
  3. 《系统集成项目管理工程师》必背100个知识点-73配置管理和变更管理
  4. 吴恩达 coursera ML 第九课总结+作业答案
  5. matlab impyramid,图像 – Matlab impyramid问题
  6. 论文浅尝 | 面向跨语言实体对齐的知识图谱与实体描述协同嵌入方法
  7. 2018 ACM-ICPC World Finals - Beijing F.Go with the Flow
  8. 数据结构上机实践第八周项目7—对称矩阵的压缩存储及基本运算
  9. 数据库中查询的各种连接(左连接,右连接,全连接,内连接,交叉连接,自连接)...
  10. win10下安装Cygwin配置gcc编译环境
  11. mysql子查询更改指定数据库_MySQL数据库update更新子查询
  12. .Net Micro Framework移植基础(包编译通过)
  13. Java设计模式超详细
  14. Delphi 监听安卓(Android)手机通知栏信息
  15. Another Redis Desktop Manager 链接redis,redis集群链接后用显示不全的问题
  16. 计算机网络---应用层
  17. 辣评10月自主SUV销量:优胜劣汰开始 哪些产品将死得其所?
  18. Ironic的安装那些事儿
  19. nodeName学习
  20. Python进行远程视频监控

热门文章

  1. 添加全局函数$.extend和对象方法$.fn
  2. 2015-05-26
  3. ajax无刷新方式对form表单进行赋值!
  4. Python 每次处理一个字符
  5. 使用Team Foundation Server进行源代码管理(转)
  6. C#学习系列之二:变量
  7. Perl 连接 SQL Server(ReShip)
  8. 标注工具_语料标注工具(3)
  9. Ubuntu下用gcc与nasm联合编译
  10. Android Service使用方法--简单音乐播放实例