8086指令系统(五) 程序控制指令

程序控制指令

1. 无条件转移指令

(1). 段内直接转移指令JMP

JMP NEAR LABLE

功能:
  LABLE是一个符号地址, 指令执行会跳到LABLE指向的位置

(2). 段内间接转移指令JMP

JMP OPRD

功能:
  OPRD是一个16位寄存器或存储器地址(需要指明16位), 指令执行会跳到以OPRD为内容的位置

(3). 段间直接转移指令JMP

JMP FAR LABLE

功能:
  LABLE是另一个代码段的地址, 指令执行会跳到CS:IP的位置

(4). 段间间接转移指令JMP

JMP CALL DWORD PTR [REG]

功能:
  REG是16位寄存器, 存储器中该位置存储着CS:IP, 低16位送入IP, 高16位送入CS

2. 有条件转移指令

转移范围: -128 ~ +127

指令名称汇编格式转移条件备注
CX内容为0 转移JCXZ TARGETCX = 0-
大于/不小于等于 转移JG/JNLE TARGETSF = OF, 且 ZF = 0带符号数
大于等于/不小于 转移JGE/JNL TARGETSF = OF带符号数
小于/不大于等于 转移JL/JNGE TARGETSF ≠ OF, 且 ZF = 0带符号数
小于等于/不大于 转移JLE/JNG TARGETSF ≠ OF, 且 ZF = 1带符号数
溢出转移JO TARGETOF = 1-
不溢出转移JNO TARGETPF = 0-
结果为负转移JS TARGETSF = 1-
结果为正转移JNS TARGETSF = 0-
高于/不低于等于转移JA/JNBE TARGETCF = 0, 且 ZF = 0无符号数
高于等于/不低于转移JAE/JNB TARGETCF = 0无符号数
低于/不高于等于转移JB/JNAE TARGETCF = 1无符号数
低于等于/不高于转移JBE/JNA TARGETCF = 1 或 ZF = 1无符号数
进位转移JC TARGETCF = 1-
无进位转移JNC TARGETCF = 0-
等于或为零转移JE/JZ TARGETZF = 1-
不等于或非零转移JNE/JNZ TARGETZF = 0-
奇偶校验为偶转移JP/JPE TARGETPF = 1-
奇偶校验为奇转移JNP/JPO TARGETPF = 0-

3. 有条件转移指令

指令转移条件
LOOP LABLECX ≠ 0
LOOPZE(LOOPE) LABLECX ≠ 0 ,且 ZF = 1
LOOPNZ(LOOPNE) LABLECX ≠ 0 ,且 ZF = 0

4. 过程调用和返回

(1). 段内直接调用指令

CALL NEAR PROC

功能:
  PROC是一个近过程的符号地址, 指令执行会跳到PROC这个过程中

(2). 段内间接调用指令

CALL OPRD

功能:
  OPRD是一个16位寄存器或存储器地址(需要指明16位), 内容代表近过程入口地址, IP会指向该位置, 并且向下执行

(3). 段间直接调用指令

CALL FAR LABLE

功能:
  PROC是一个远过程的符号地址, 指令执行会跳到CS:IP位置执行

(4). 段间间接调用指令

CALL DWORD PTR [REG]

功能:
  REG是16位寄存器, 指令跳到以寄存器为内容的4个单元位置处执行, 低16位送入IP, 高16位送入CS, CS:IP

(4). 返回指令

RET

功能:
  返回过程的调用处

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值