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

书读的越多而不加思考,你就会觉得你知道得很多;而当你读书而思考得越多的时候,你就会越清楚地看到,你知道得很少。

导读:本篇文章讲解 8086指令系统(五) 程序控制指令,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

程序控制指令

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 TARGET CX = 0
大于/不小于等于 转移 JG/JNLE TARGET SF = OF, 且 ZF = 0 带符号数
大于等于/不小于 转移 JGE/JNL TARGET SF = OF 带符号数
小于/不大于等于 转移 JL/JNGE TARGET SF ≠ OF, 且 ZF = 0 带符号数
小于等于/不大于 转移 JLE/JNG TARGET SF ≠ OF, 且 ZF = 1 带符号数
溢出转移 JO TARGET OF = 1
不溢出转移 JNO TARGET PF = 0
结果为负转移 JS TARGET SF = 1
结果为正转移 JNS TARGET SF = 0
高于/不低于等于转移 JA/JNBE TARGET CF = 0, 且 ZF = 0 无符号数
高于等于/不低于转移 JAE/JNB TARGET CF = 0 无符号数
低于/不高于等于转移 JB/JNAE TARGET CF = 1 无符号数
低于等于/不高于转移 JBE/JNA TARGET CF = 1 或 ZF = 1 无符号数
进位转移 JC TARGET CF = 1
无进位转移 JNC TARGET CF = 0
等于或为零转移 JE/JZ TARGET ZF = 1
不等于或非零转移 JNE/JNZ TARGET ZF = 0
奇偶校验为偶转移 JP/JPE TARGET PF = 1
奇偶校验为奇转移 JNP/JPO TARGET PF = 0

3. 有条件转移指令

指令 转移条件
LOOP LABLE CX ≠ 0
LOOPZE(LOOPE) LABLE CX ≠ 0 ,且 ZF = 1
LOOPNZ(LOOPNE) LABLE CX ≠ 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

功能:
  返回过程的调用处

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/122849.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!