3.汇编指令:【程序控制指令】转移指令、循环控制、 过程调用、中断控制

3.汇编指令:【程序控制指令】转移指令、循环控制、 过程调用、中断控制文章目录 loopnz

大家好,欢迎来到IT知识分享网。

程序控制指令

程序控制类指令的本质是:控制程序的执行方向
决定程序执行方向的因素:CSIP
程序控制类指令的操作对象是:IPCS和IP
控制程序执行方向的方法:


在这里插入图片描述

程序控制指令包含4类:转移指令循环控制过程调用中断控制

一、 转移指令

转移是通过修改下一条要执行指令的偏移地址段地址和偏移地址实现程序的转移
分为:

在这里插入图片描述

1.1 无条件转移指令 JMP

分为直接转移间接转移
分为段内(16位) 和 段间(32位)

在这里插入图片描述

直接和间距的区别就是,前者是直接给地址,后者通过寄存器或者其他

段间和段内的区别就是,前者32位(CS:IP 故32位),后者是16位(就ip,所以16位)

1.1.1 段内直接
1.1.2 段内间接

如果我们是通过指令里面的寄存器 或者 存储器操作数给出的目标地址,就称为间接转移。例如:

MOV BX, 1200H JMP BX //运行完了之后 IP = 1200H,这里 BX 是寄存器操作数 

另外一种表现形式:

MOV BX, 1200 //注意:这里不是 H JMP WORD PTR [BX] //这样一来,我们把数据段里面 标号为 1200和 1201 的两个单元分别赋给 IP的低位和高位 

段内间接例子在这里插入图片描述


还是以上面的为例,如果我们的 Label 符号是 32 位的地址,那么就表示 段间转移

同样,段间转移也分为了 段间直接转移段间间接转移
段间直接转移就是我们在指令里面直接给出 32 位目标地址(CS:IP)
段间间接转移就是需要通过 32 位的存储器操作数(注意不能是寄存器了)给出目标地址。

1.1.3 段间直接

对于段间直接转移,指令格式是:JMP FAR Label(FAR 代表远地址)

1.1.4 段间间接

那么对于段间间接转移,我们可以用下面的表述:

JMP DWORD PTR[BX] //[BX]指向的是存储器操作数 

段间间接例题:

在这里插入图片描述


1.2 有条件转移指令 …

  1. 根据单个条件标志的设置情况转移
    在这里插入图片描述
    这种转移指令常常用于适用于测试某一次运算的结果并根据其不同特征产生程序分支不同的处理的情况

  2. 比较两个无符号数,并根据比较的结果转移
    在这里插入图片描述
  3. 比较两个带符号数,并根据比较的结果转移
    在这里插入图片描述
  4. 常用
    在这里插入图片描述

二、循环转移指令

循环控制指令有几个要点:

  • 循环范围:以当前 IP 为中心的 -128~ +127的范围内循环
  • 循环次数:循环的次数必须要由 CX 寄存器指定。
  • 循环指令也分为无条件循环 LOOP条件循环指令 LOOPZ/ LOOPNZ

2.1 无条件循环指令 LOOP

DEC CX JNZ 符合地址 

循环的条件是:当 CX ≠ 0时。

在这里插入图片描述

2.2 条件循环指令 LOOPZ/ LOOPNZ

功能:先使得 CX -1,再根据 CX 的值以及 ZF 的值去决定是否循环。

  1. LOOPZ(相等则循环):当 CX ≠ 0,且 ZF = 1时循环
  2. LOOPNZ(不相等则循环):当 CX ≠ 0,且 ZF = 0时循环

因此,条件循环指令前面需要跟能够改变 ZF 状态的指令,用以控制循环


三、过程调用指令

3.1 基本格式

调用指令:CALL <子过程的入口地址>
返回指令:RET

分为直接转移间接转移
分为段内(16位) 和 段间(32位)
在这里插入图片描述

3.2 段内 直接/间接 调用例子

在这里插入图片描述

3.3 段间 直接/间接 调用例子

在这里插入图片描述

3.4 CALL指令执行对堆栈的影响

在这里插入图片描述


四、中断控制

响应中断,即针对某个随机或异常事件执行一段处理程序,称为中断服务程序,本质上是一种特殊的过程调用,且全部是远过程调用。

指令格式:INT n
n=0 ~ 255

中断指令例子

在这里插入图片描述



免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/137104.html

(0)
上一篇 2025-06-22 21:33
下一篇 2025-06-22 21:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信