第十章 CALL和RET指令

callret指令都是转移指令,它们都修改CS和IP。经常被共同用于实现子程序的设计。这一章,我们讲解callret指令的原理

10.1 ret和retf

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

    • (IP)=((ss)*16+(sp))
    • (sp)=(sp)+2
    • 等于 pop IP
  • retf指令用中的数据,修改CS和IP的内容,从而实现远转移

    • (IP)=((ss)*16+(sp))
    • (sp)=(sp)+2
    • (IP)=((ss)*16+(sp))
    • (sp)=(sp)+2
    • 等于 pop IP,pop CS

10.2 call指令

CPU执行call指令时,进行两步操作:

  • 将当前的IPCS和IP压入栈中
  • 转移

call指令不能实现短转移,除此之外,call与jmp类似。

接下来以转移地址的不同方式为主线,详解call指令

10.3 根据位移进行转移的call指令(段内转移)

  • 格式: call 标号(压入栈,转移到标号)
  • 执行如下操作

    • (sp)=(sp)-2

      ((ss)*16+(sp))=(IP)

    • (IP)=(IP)+16位位移
  • 相当于

    push IP
    jmp near ptr 标号

10.4 根据目的的进行的call指令(段间转移)

  • 格式:call far ptr 标号实现段间转移

  • 执行如下操作:

    • (sp)=(sp)-2
    • ((ss)*16+(sp))=(CS)
    • (sp)=(sp)-2
    • ((ss)*16+(sp))=(IP)
    • (CS)=标号所在段的段地址
    • (IP)=标号所在段的偏移地址
  • 相当于

    push CS
    push IP
    jmp far ptr 标号
  • 注意先丢CS,再丢IP

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

  • 格式:call 16位reg
  • 功能

    • (sp)=(sp)-2
    • ((ss)*16+(sp))=(IP)
    • (IP)=(16位reg)
  • 相当于

    push IP
    jmp 16位reg

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

  • call word ptr 内存单元地址

    • 相当于

      push IP
      jmp word ptr 内存单元地址
  • call dword ptr 内存单元地址

    • 相当于

      push CS
      push IP
      jmp dword ptr 内存单元地址

10.7 call和ret的配合使用

  • call 相当于 函数调用
  • ret 相当于 return

10.8 mul指令(乘法)

mul 是乘法指令
必须都是8位,或是16位

  • 8位:一个放在AL,另一个放在8位reg或内存单元,结果放在AX
  • 16位: 一个放在AX,另一个放在16位reg或内存单元,结果高位放在DX,低位放在AX

10.10 参数和结果传递的问题

  • 用寄存器来存储参数和结果是最常使用的方法

10.11 批量数据的传递

  • 将批量数据的首地址存入寄存器
  • 返回数据的收地存入寄存器

10.12 寄存器冲突的问题

子程序开始:子程序中使用的寄存器入栈

           子程序的内容

           子程序中使用的寄存器出栈

           返回(ret,retf)

[汇编学习笔记][第十章 CALL和RET指令]的更多相关文章

  1. 汇编学习笔记(11)int指令和端口

    格式 int指令也是一种内中断指令,int指令的格式为int n,n是中断类型码.也就是说,使用int指令可以调用任意的中断例程,例如我们可以显示的调用0号中断例程,还记得在汇编学习笔记(10)中我们 ...

  2. 王爽汇编第十章,call和ret指令

    目录 王爽汇编第十章,call和ret指令 call和ret指令概述: ret和retf ret指令 retf指令 call 和 ret 的配合使用 call指令详解 call原理 call指令所有写 ...

  3. 汇编入门学习笔记 (十二)—— int指令、port

    疯狂的暑假学习之  汇编入门学习笔记 (十二)--  int指令.port 參考: <汇编语言> 王爽 第13.14章 一.int指令 1. int指令引发的中断 int n指令,相当于引 ...

  4. 交换机安全学习笔记 第九~十章 HSRP VRRP

    HSRP  (Hot Standby Router Protocol) 热备份路由器协议 思科私有 HSRP消息使用UDP 端口号 1985(IPv6时为2029) 使用多播地址 224.0.0.2( ...

  5. 汇编学习笔记(7)call和ret指令

    ret和retf CPU执行ret指令时进行以下两步操作: (IP)=((ss)*16+(sp)) (sp)=(sp)+2 这相当于pop IP CPU执行retf指令时进行以下四步操作: (IP)= ...

  6. 汇编学习笔记(3)[bx]和loop

    本文是<汇编语言>一书的学习笔记,对应书中的4-6章. 汇编程序的执行 要想将源代码变为可执行的程序需经过编译.连接两个步骤,WIN7操作系统下需要MASM程序来进行编译连接工作.将MAS ...

  7. 第十章 Call 和 Ret 指令

    引言 想想程序之间的加载返回过程. call 和 ret 指令都是转移指令,它们都修改 IP,或同时修改 CS 和 IP. call 和 ret 经常被共同用来实现自程序的设计. 这一章,我们讲解 c ...

  8. 汇编学习笔记(AT&T语法)

    一个最基本的汇编程序如下所示: .section .data .section .text .globl _start _start: movl $, %eax # the number 1 is t ...

  9. 汇编学习笔记——DOS及DEBUG介绍

    转自:https://www.shiyanlou.com/courses/running/332 一.课程简介 声明:该课程基于<汇编语言(第2版)>郑晓薇 编著,机械工业出版社.本节实验 ...

随机推荐

  1. [计算机组成原理][实验十.R-I-J型指令CPU设计实验总结]

    总算解决一大心头之患了,比想象中容易,通宵两夜,刷完了十个实验,这个实验就是最后的了.感慨颇多.特地写篇总结. 想做一件事,就立马去做把.你会发现没那么困难,往往最大的困难,是心里的困难. 培养了HD ...

  2. (转)IIS5.1的安装配置并发布ASP.NET网站

    最近跟老师做一个桥梁养护系统的项目,要求用VS2008+Sql Server2000,服务器用IIS.由于之前做过的ASP.NET项目都是用的VS内置的服务器,并没有使用过IIS,第一次搭,花了几个小 ...

  3. Android -------- API等级

      API等级 Android版本 代号名称(基本上是按ABC命名排序的) 注释说明 1 Android 1.0     2 Android 1.1 Petit Four   3 Android 1. ...

  4. 卸载服务器自带httpd服务

    #rpm -e mod_ssl #rpm -e mod_python #rpm -e mod_perl #rpm -e webalizer   把所有的依赖包都卸载后   再次 #rpm -e htt ...

  5. BZOJ 1003 物流运输 (动态规划 SPFA 最短路)

    1003: [ZJOI2006]物流运输 Time Limit: 10 Sec Memory Limit: 162 MB Submit: 5590 Solved: 2293 [Submit][Stat ...

  6. poj3273 二分

    Monthly Expense Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 21448   Accepted: 8429 ...

  7. c#中serialPort1_DataReceived串口接收事件处理

    1.缓冲区不定字节读取(波特率很高也没问题) //Thread.sleep(1000);//处理事件这块可以加上延时确保不定数的数据可以全部收到缓冲后,才去读缓冲内容--单位:毫秒 byte[] da ...

  8. [转]Hibernate映射的基本操作

       ++YONG原创,转载请注明http://blog.csdn.net/qjyong/article/details/1829672          Hibernate映射主要是通过对象关系映射 ...

  9. [TYVJ] P1027 木瓜地

    木瓜地 背景 Background USACO OCT09 4TH   描述 Description Bessie不小心游荡出Farmer John的田地,而走进了相邻的农民的地.她举起一个木瓜,木瓜 ...

  10. Effective Java2读书笔记-类和接口(四)

    第19条:接口只用于定义类型 这一条就举了一个反例,说有些接口中只包含常量.这是对接口的不良使用.要实现相同的功能,应该使用不可实例化的工具类(第4条说过). public class Physica ...