第10章 CALL和RET指令

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

10.1

  ret 和 retf

  ret指令用栈中的数据,修改Ip的内容,从而实现近转移。

  retf 指令用栈中的数据,修改CS 和 IP 的内容,从而实现远转移。

  cpu执行 ret 指令时相当于  POP IP

CPU 执行 retf指令时 相当于进行 POP IP pop CS

  cpu 执行call 指令时,实现俩步操作:

    将当前的IP或者CS 和IP压入栈中

    转移

 10.2 call指令

    cpu执行call指令时,进行俩步操作

     将当前的IP或者CS和IP压入栈中

      转移

 10.3 依据位移进行转移的call指令

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

 10.4 转移的目的地址在指令中的call指令

   call 其对应的机器指令中并没有转移的目的地址,而实相对于当前IP的转移位移

    call far ptr 标号  实现的时段间转移

   CPU 执行此种格式的call指令时,进行如下的操作

  push CS

  push IP

  jmp far ptr 标号

  10.5

转移地址在寄存器中的call指令

  指令格式 :call 16位reg

  CPU执行“call 16位reg时,相当于进行:

push IP

jmp 16位reg

10.6 转移地址在内存中的call指令

   转移地址在内存中的call指令有俩种格式

  (1)call word prt 内存单元地址

    用汇编语法来解释此种格式的call指令

    PUSH ip

    jmp word ptr

  (2)call dword ptr 内存单元地址

    push cs

    push ip

    jmp dword ptr

10.8 mul指令

    mul 是乘法指令。

原文地址:https://www.cnblogs.com/godoforange/p/10301096.html

时间: 2024-11-08 22:10:34

第10章 CALL和RET指令的相关文章

汇编语言(王爽) 第10章 call和ret

这2个指令也是转移指令,一起用的时候有特效~~~~ 10.1 ret and retf ret 相当于pop ip 把栈顶的字弹出到ip retf相当于先执行pop ip and pop cs 10.2 call 执行2步 1 先把IP或cs和ip推入栈中 2 转移到 标号或内存处 10.3 call 标号 call 标号 转移范围为-32768-32767 16位转移 相当于执行 push ip jmp near ptr 标号 10.4 call far ptr 标号 相当于 push cs

第10章 栈和局部变量操作

10.1常量入栈操作许多操作码执行常量入栈操作.操作码在执行常量入栈操作之前,使用如下三种方式指明 常量的值:常量值隐式包含在操作码内部,常量值在字节码流中如同操作数一样紧随在操作码 之后,或者从常量池中取出常量. 一些操作码自行指明入栈的常量的类型和值,例如,iconst_1操作码告知Java虚拟机向栈压 人一个值为1的int类型数.Java虚拟机为经常压人栈的各种不同类型的数据定义了一些这样的操 作码.相对于从字节码流中取出操作数或者指向常量池的指令来说,上述这些指令都是冗余指 令,但它们更

汇编-10.0-CALL和RET指令

call和ret指令都是转移指令,他们都是修改IP,或同时修改CS和IP.它们常被共同用来实现子程序设计. 1.ret和retf ret指令用栈中的数据,修改IP的内容,从而实现近转移: retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移: CPU执行ret指令时,进行下面两步操作: (1).(IP)=((ss)*16+(sp)) (2).(sp)=(sp)+2 用汇编语法解释,相当于: pop IP CPU执行retf指令时,进行下面4步操作: (1).(IP)=((ss)*16+

程序是怎样跑起来的-第10章 通过汇编语言了解程序的实际构成

第10章通过汇编语言了解程序的实际构成 热身问题 1.本地代码指令中,表示其功能的英文缩写称为什么? 助记符.汇编语言是通过利用助记符来记述程序的. 2.汇编语言的源代码转换成本地代码的方式称为什么? 汇编.使用汇编器这个工具来进行汇编. 3.本地代码转换成汇编语言的源代码的方式称为什么? 反汇编.通过返汇编,得到人们可以理解的代码. 4.汇编语言的源文件的扩展名,通常是什么格式? .asm..asm是assembler(汇编器)的简称 5.汇编语言程序中的段定义指的是什么? 构成程序的命令和数

CALL和RET指令

1.call和ret指令都是转移指令,它们都修改IP的值,或同时修改CS和IP的值.它们经常共同用语实现子程序的设计. 2.ret指令用栈中的数据,修改IP的内容,从而实现近转移. 3.retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移. 4.CPU执行ret指令时, (1)(IP)=((ss)*16+(sp)) (2)(sp)=(sp)+2 相当于进行:pop IP 执行retf指令时, (1)(IP)=((ss)*16+(sp)) (2)(sp)=(sp)+2 (3)(CS)=(

汇编语言---call和ret指令

汇编语言--call和ret指令 call和ret指令 call和ret指令都是转移指令,它们都修改IP,或同时修改CS和IP. 它们经常被共同用来实现子程序的设计. ret和retf ret指令用栈中的数据,修改IP的内容,从而实现近转移: retf指令用栈中的数据,修改CS和IP的内容,从而实现远转移. CPU执行ret指令时,进行下面的两步操作: (1)(IP) = ((ss)*16 +(sp)) (2)(sp) = (sp)+2 CPU执行retf指令时,进行下面四步操作: (1)(IP

汇编语言笔记 CALL和RET指令

转载地址:http://www.cnblogs.com/dennisOne ?模块化程序设计 模块化程序设计 汇编语言通过call和ret指令实现了模块化程序设计.可以实现多个相互联系.功能独立的子程序来解决一个复杂的问题. 子程序的框架 1 assume cs:code 2 code segment 3 main: : 4 : 5 call sub1 ; 调用子程序sub1 6 : 7 : 8 mov ax, 4c00h 9 int 21h 10 11 sub1: : ; 子程序sub1开始

MySQL性能调优与架构设计——第10章 MySQL数据库Schema设计的性能优化

第10章 MySQL Server性能优化 前言: 本章主要通过针对MySQL Server(mysqld)相关实现机制的分析,得到一些相应的优化建议.主要涉及MySQL的安装以及相关参数设置的优化,但不包括mysqld之外的比如存储引擎相关的参数优化,存储引擎的相关参数设置建议将主要在下一章“常用存储引擎的优化”中进行说明. 10.1 MySQL 安装优化 选择合适的发行版本 1. 二进制发行版(包括RPM等包装好的特定二进制版本) 由于MySQL开源的特性,不仅仅MySQL AB提供了多个平

汇编语言——call 和 ret 指令

一.ret 和 retf 我们用汇编语法来解释ret和retf指令,则: CPU执行ret指令时,相当于进行: pop IP CPU执行retf指令时,相当于进行: pop IP(一般IP都是在低位地址的) pop CS(CS在高位地址) 二.call指令 CPU执行call指令,进行两步操作: (1)将当前的 IP 或 CS和IP 压入栈中: (2)转移. call 指令不能实现段内短转移,除此之外,call指令实现转移的方法和 jmp 指令的原理相同,下面的几个小节中 ,我们以给出转移目的地