1.控制转移指令

 无条件转移指令
JMP
 条件转移指令
JZ / JNZ 、 JE / JNE、 JS / JNS、 JO / JNO、
JP / JNP、 JB / JNB、 JL / JNL、 JBE / JNBE、
JLE / JNLE、 JCXZ
 循环指令
LOOP、LOOPZ / LOOPE、LOOPNZ / LOOPNE
 子程序调用和返回指令
CALL、RET
 中断与中断返回指令
INT、INTO、IRET

2.无条件转移指令

段内直接短转移:JMP SHORT OPR
  执行操作:(IP) ← (IP) + 8位位移量

段内直接近转移:JMP NEAR PTR OPR
  执行操作:(IP) ← (IP) + 16位位移量

段内间接转移: JMP WORD PTR OPR
  执行操作: (IP) ← (EA)

段间直接远转移:JMP FAR PTR OPR
  执行操作:(IP) ← OPR 的段内偏移地址
       (CS) ← OPR 所在段的段地址

段间间接转移: JMP DWORD PTR OPR
  执行操作: (IP) ← (EA)
        (CS) ← (EA+2)

3.条件转移指令

注意:只能使用段内直接寻址的8 位位移量

3.1根据单个条件标志的设置情况转移

      格式 测试条件  
  JZ(JE)  OPR ZF=1

jump if zero,or equal

结果为零(或相等)则转移

JNZ(JNE)  OPR ZF=0
  JS  OPR SF=1

jump if sign

结果为负则转移

JNS  OPR  SF=0
  JO   OPR OF=1

jump if overflow

结果溢出则转移

JNO   OPR OF=0
  JP   OPR PF=1

jump if parity,or parity even

奇偶为为1则转移

JNP   OPR PF=0
  JB(JNAE,JC)  OPR CF=1

低于below,

或者不高于或者等于not above or equal,

或进位为1则转移carry

JNB(JAE,JNC)  OPR CF=0

3.2比较两个无符号数,并根据比较结果转移*

* 适用于地址或双精度数低位字的比较

    格式          测试条件

<    JB (JNAE,JC) OPR      CF = 1      jump if below (not above or equal , carry)
 ≥    JNB (JAE,JNC) OPR    CF = 0      jump if not below ( above or equal , not carry)
 ≤    JBE (JNA) OPR       CF∨ZF = 1    jump if below or equal (not above)
>    JNBE (JA) OPR      CF∨ZF = 0    jump if not below or equal (above)

3.3 比较两个带符号数,并根据比较结果转移*

* 适用于带符号数的比较

    格式         测试条件
<   JL (JNGE) OPR    SF∀OF = 1        less, not greater or equal
≥    JNL (JGE) OPR     SF∀OF = 0
≤    JLE (JNG) OPR     (SF∀OF)∨ZF = 1    less or equal, not greater
>   JNLE (JG) OPR    (SF∀OF)∨ZF = 0

3.4 测试 CX 的值为 0 则转移

格式                    测试条件
JCXZ OPR         (CX)=0

3.循环指令

3.1概述

注意:
* CX 中存放循环次数
* 只能使用段内直接寻址的8 位位移量

LOOP
LOOPZ / LOOPE
LOOPNZ / LOOPNE

执行步骤:
  (1) (CX) ← (CX) - 1
  (2) 检查是否满足测试条件,

   如满足则(IP) ← (IP) + 8位位移量,实行循环;
   不满足则 IP 不变,退出循环。

3.2指令

循环指令:LOOP OPR
测试条件:(CX) ≠ 0

为零或相等时循环指令:LOOPZ(LOOPE) OPR
测试条件:ZF=1 且 (CX) ≠ 0

不为零或不相等时循环指令:LOOPNZ(LOOPNE) OPR
测试条件:ZF=0 且 (CX) ≠ 0

4.子程序调用和返回指令

4.1 CALL 调用指令

段内直接近调用:CALL DST
执行操作: (SP) ← (SP) - 2
         ( (SP)+1,(SP) ) ← (IP)
      (IP) ← (IP) + 16位位移量

段内间接近调用:CALL DST
执行操作: (SP) ← (SP) - 2
      ( (SP)+1,(SP) ) ← (IP)
      (IP) ← (EA)

段间直接远调用:CALL DST
执行操作:   (SP) ← (SP) - 2
      ( (SP)+1,(SP) ) ← (CS)
      (SP) ← (SP) - 2
      ( (SP)+1,(SP) ) ← (IP)
      (IP) ← 偏移地址
      (CS) ← 段地址

段间间接远调用:CALL DST
执行操作: (SP) ← (SP) - 2
      ( (SP)+1,(SP) ) ← (CS)
      (SP) ← (SP) - 2
      ( (SP)+1,(SP) ) ← (IP)
      (IP) ← (EA)
      (CS) ← (EA+2)

4.2 RET 返回指令

段内近返回:RET
执行操作: (IP) ← ( (SP)+1,(SP) )
      (SP) ← (SP) + 2

段内带立即数近返回:RET EXP

段间远返回:RET
执行操作: (IP) ← ( (SP)+1,(SP) )
      (SP) ← (SP) + 2
      (CS) ← ( (SP)+1,(SP) )
      (SP) ← (SP) + 2

段间带立即数远返回:RET EXP

5.中断指令

5.1中断向量

中断例行程序的入口地址,存放于中断向量区。

5.2 中断指令: INT TYPE 或 INT

执行操作: (SP) ← (SP) - 2
      ( (SP)+1,(SP) ) ← (FLAGS)
      (SP) ← (SP) - 2
      ( (SP)+1,(SP) ) ← (CS)
      (SP) ← (SP) - 2
      ( (SP)+1,(SP) ) ← (IP)
      (IP) ← (TYPE*4)
      (CS) ← (TYPE*4+2)

5.3 溢出中断指令:INTO

执行操作: 若OF=1,(SP) ← (SP) - 2
      ( (SP)+1,(SP) ) ← (FLAGS)
      (SP) ← (SP) - 2
      ( (SP)+1,(SP) ) ← (CS)
      (SP) ← (SP) - 2
      ( (SP)+1,(SP) ) ← (IP)

      (IP) ← (10H)
      (CS) ← (12H)

5.4 从中断返回指令:IRET

执行操作: (IP) ← ( (SP)+1,(SP) )
      (SP) ← (SP) + 2
      (CS) ← ( (SP)+1,(SP) )
      (SP) ← (SP) + 2
      (FLAGS) ← ( (SP)+1,(SP) )
      (SP) ← (SP) + 2

注意:

* TYPE (0~255) 是中断类型号, 隐含的类型号为3
* INT 指令还把 IF 和 TF 置0,但不影响其它标志位
* IRET 指令执行完,标志位由堆栈中取出的值确定

转载于:https://www.cnblogs.com/ZanderZhao/p/11054484.html

30336控制转移指令相关推荐

  1. Intel 64/x86_64/IA-32/x86处理器 - 通用指令(5) - 控制转移指令

    Control Transfer Instructions 控制转移指令支持无条件跳转jump,条件跳转conditional jump,循环loop,调用call与返回return操作,从而实现程序 ...

  2. RV32I控制转移指令的偏移量计算问题

    RV32I的控制转移指令可以分为无条件跳转(unconditional jumps)和条件分支(conditional branches).其中,无条件跳转(unconditional jumps)包 ...

  3. 16.控制转移指令(条件跳转指令、比较条件跳转指令、多条件分支跳转指令、无条件跳转指令)

    目录 1.控制转移指令 1.1 条件跳转指令 1.2 比较条件跳转指令 1.3 多条件分支跳转指令 1.4 无条件跳转指令 1.控制转移指令 控制转移指令分为如下图所示的5种,其中比较指令在算术指令中 ...

  4. 8086控制转移指令学习笔记

    一.无条件转移指令 助记符:JMP 功能:无条件转移指令使程序离开原程序位置而跳转到JMP指令指定的另一个程序位置去执行. 1.目的地址的寻址方式 (1)直接寻址方式:用标号表达 (2)间接寻址方式: ...

  5. java 控制转移指令_控制转移类指令

    条件转移指令Jcc根据指定的条件确定程序是否发生转移.如果满足条件则程序转移到目标地址去执行程序:不满足条件,则程序将顺序执行下一条指令. 其通用格式为: Jcc LABEL         ;条件满 ...

  6. 计算机原理转移指令题,转移指令计算机原理.pdf

    转移指令计算机原理.pdf 3.3.5 程序控制指令程序控制指令 程序控制指令又称为控制转移指令,包括转移指令.循环控制指令.过程调用指令和 中断指令 4 类.转移指令又分为无条件转移指令和条件转移指 ...

  7. c语言rsi2010中制运行,汇编语言初探(控制类指令)-来自第三章3.6的笔记-P135-P163

    1.正溢出与负溢出: 首先,一个正数与一个负数相加,不可能溢出,因为结果的绝对值一定小于两个加数的绝对值,既然两个加数能合理表示出来,结果一定也能合理表示出来. 其次,正溢出是由于两个很大的正数相加, ...

  8. 8086CPU指令系统——控制转移类指令

    控制转移(Control Jump)类指令用于改变程序的执行顺序. 8086提供了以下控制转移指令: 调用与返回指令.无条件转移指令.条件转移指令.循环控制指令.中断指令. 一.调用与返回指令 调用指 ...

  9. 微型计算机转移指令,微机原理与接口技术:转移指令

    版权声明:以上文章中所选用的图片及文字来源于网络以及用户投稿,由于未联系到知识产权人或未发现有关知识产权的登记,如有知识产权人并不愿意我们使用,如果有侵权请立即联系:55525090@qq.com,我 ...

最新文章

  1. DCMTK:类DcmUniqueIdentifier的测试程序
  2. c#通过app.manifest使程序 右键 以管理员身份运行
  3. 信息安全工程师笔记-案例分析(四)
  4. 计算两个经纬度的距离_HTML5 地理定位+地图 API:计算用户到商家的距离
  5. 文东工作室开通微信公众号了!欢迎订阅!~
  6. ndnsim r语言 ubuntu_Python语言---数据库
  7. Mysql为什么多个大版本并行发布的个人理解
  8. python安装sqlalchemy-Python流行ORM框架sqlalchemy安装与使用教程
  9. windows命令行包管理工具 -Scoop
  10. 图片压缩利器:TinyPNGWrapper
  11. python数据存储到access_Python操作Access数据库基本步骤分析
  12. SSI接口 AC97
  13. matlab常用了滤波函数小结
  14. 《可复制的领导力》——樊登书摘
  15. 十大管理概念(背诵)
  16. 推特用户曝Win10版微信截图 微信或将回归Win系统
  17. 单链表的逆置算法解析
  18. 【历史上的今天】12 月 8 日:D 语言发布;“复制粘贴”的发明者逝世;人人网成立
  19. 数论读书笔记——欧几里得和扩展欧几里得
  20. chatbot_我如何通过帮助我的ChatBot理解意图来使其变得更聪明

热门文章

  1. 程序员的爱情 第十二章
  2. Linux Shell常用技巧(一)
  3. 使用 Cuttlefish 虚拟 Android 设备
  4. Charles调试Https Android
  5. WebKit DOM Event (二)
  6. [转]个人开发者做一款Android App需要知道的事情
  7. RabbitMQ—流控机制
  8. HDU-4417 Super Mario
  9. UE4 Run On Server与Run on owning client
  10. 重温Javascript(四)-函数