-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

一.跳转相关的标志位:

11

10

9

8

7

6

5

4

3

2

1

0

OF

DF

IF

TF

SF

ZF

 

AF

 

PF

 

CF


 

 

 








条件码:
①OF(Overflow Flag)溢出标志。溢出时为1,否则置0。
②SF(Sign Flag)符号标志。结果为负时置1,否则置0.
③ZF(Zero Flag)零标志,运算结果为0时ZF位置1,否则置0.
④CF(Carry Flag)进位标志,进位时置1,否则置0.
⑤AF(Auxiliary carry Flag)辅助进位标志,记录运算时第3位(半个字节)产生的进位置。有进位时1,否则置0.
⑥PF(Parity Flag)奇偶标志。结果操作数中1的个数为偶数时置1,否则置0.

控制标志位:
⑦DF(Direction Flag)方向标志,在串处理指令中控制信息的方向。
⑧IF(Interrupt Flag)中断标志。
⑨TF(Trap Flag)陷井标志,单步中断。

二.条件跳转的分类

(1).标志寄存器FR中有6个标志是状态的,它反映运算结果的情况。6个状态中除AF半进位标志外,其余5个标志可以反映10种不同的条件

故单条件跳转指令有10种

jc                              CF=1;则转移

jnc                            CF=0;则转移

je\jz                          ZF=1;jmp

jne\jnz                      ZF=0;jmp

js                              SF=1;jmp

jns                            SF=0;jmp

jo                             OF=1;jmp

jno                           OF=0;jmp

jp\jpe                       PF=1;jmp

jnp\jpo                     PF=0;jmp

(2).无符号数条件跳转指令

用于无符号数的条件跳转指令如下

ja\jnbe                     大于则跳转           >     则转移, CF 或 ZF = 0;

jae\jnb                     大于等于则跳转    >=   则跳转,   CF = 0;

jna\jbe                     小于则跳转          <      则转移,  CF 或 ZF = 0;

jb\jnae                     小于等于则跳转    <=   则跳转,  CF = 1;

(3).带符号数的比较

JG/JNLE                 大于则跳             >      则跳,        SF 或 OF 或 ZF = 0则跳

JGE/JNL                 大于等于则跳      >=    则跳,        SF 或 OF = 0 则跳

JL/JNGE                 小于则跳             <      则跳,        SF 或 OF = 1 则跳

JLE/JNG                 小于等于则跳      <=    则跳,        SF 或 OF 或 ZF = 1则跳

用带符号数和无符号数的条件转移指令时,必须严格加以区别,否则会得到错误的结果

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

三.无条件跳转

操作码 伪码指令 含义
EB  cb
JMP rel8 相对短跳转(8位),使rel8处的代码位下一条指令
E9  cw
JMP rel16 相对跳转(16位),使rel16处的代码位下一条指令
FF  /4
JMP r/m16 绝对跳转(16位),下一指令地址在r/m16中给出
FF  /4
JMP r/m32 绝对跳转(32位),下一指令地址在r/m32中给出
EA  cb
JMP ptr16:16 远距离绝对跳转, 下一指令地址在操作数中
EA  cb
JMP ptr16:32 远距离绝对跳转, 下一指令地址在操作数中
FF  /5
JMP m16:16 远距离绝对跳转, 下一指令地址在内存m16:16中
FF  /5
JMP m16:32 远距离绝对跳转, 下一指令地址在内存m16:32中

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

四.16位/32位寻址方式(fisheep译 fisheep@sohu.com)

操作码
伪码指令
跳转含义
跳转类型
跳转的条件(标志位)
0F 87  cw/cd
JA rel16/32
大于
near
(CF=0 and ZF=0)
0F 83  cw/cd
JAE rel16/32
大于等于
near
(CF=0)
0F 82  cw/cd
JB rel16/32
小于
near
(CF=1)
0F 86  cw/cd
JBE rel16/32
小于等于
near
(CF=1 or ZF=1)
0F 82  cw/cd
JC rel16/32
进位
near
(CF=1)
0F 84  cw/cd
JE rel16/32
等于
near
(ZF=1)
0F 84  cw/cd
JZ rel16/32
为0
near
(ZF=1)
0F 8F  cw/cd
JG rel16/32
大于
near
(ZF=0 and SF=OF)
0F 8D  cw/cd
JGE rel16/32
大于等于
near
(SF=OF)
0F 8C  cw/cd
JL rel16/32
小于
near
(SF<>OF)
0F 8E  cw/cd
JLE rel16/32
小于等于
near
(ZF=1 or SF<>OF)
0F 86  cw/cd
JNA rel16/32
不大于
near
(CF=1 or ZF=1)
0F 82  cw/cd
JNAE rel16/32
不大于等于
near
(CF=1)
0F 83  cw/cd
JNB rel16/32
不小于
near
(CF=0)
0F 87  cw/cd
JNBE rel16/32
不小于等于
near
(CF=0 and ZF=0)
0F 83  cw/cd
JNC rel16/32
不进位
near
(CF=0)
0F 85  cw/cd
JNE rel16/32
不等于
near
(ZF=0)
0F 8E  cw/cd
JNG rel16/32
不大于
near
(ZF=1 or SF<>OF)
0F 8C  cw/cd
JNGE rel16/32
不大于等于
near
(SF<>OF)
0F 8D  cw/cd
JNL rel16/32
不小于
near
(SF=OF)
0F 8F  cw/cd
JNLE rel16/32
不小于等于
near
(ZF=0 and SF=OF)
0F 81  cw/cd
JNO rel16/32
未溢出
near
(OF=0)
0F 8B  cw/cd
JNP rel16/32
不是偶数
near
(PF=0)
0F 89  cw/cd
JNS rel16/32
非负数
near
(SF=0)
0F 85  cw/cd
JNZ rel16/32
非零(不等于)
near
(ZF=0)
0F 80  cw/cd
JO rel16/32
溢出
near
(OF=1)
0F 8A  cw/cd
JP rel16/32
偶数
near
(PF=1)
0F 8A  cw/cd
JPE rel16/32
偶数
near
(PF=1)
0F 8B  cw/cd
JPO rel16/32
奇数
near
(PF=0)
0F 88  cw/cd
JS rel16/32
负数
near
(SF=1)
0F 84  cw/cd
JZ rel16/32
为零(等于)
near
(ZF=1)

注:一些指令操作数的含义说明:
  rel8      表示 8 位相对地址
  rel16    表示 16 位相对地址
  rel16/32  表示 16或32 位相对地址
  r/m16    表示16位寄存器
  r/m32    表示32位寄存器

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

另外有其他的  在补充   ^_^

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------

Win32ASM学习[17]:条件跳转相关推荐

  1. 一次不成功的深度学习实践 - 微信跳一跳

    最近微信的跳一跳小程序火了一把,所以前天也更新了微信玩了几盘,最多手动到200左右就不行了. 后来准备用代码写个辅助工具,上Github一查,已经有人做出来了,17年12月29号的项目,不到5天差不多 ...

  2. 汇编--条件跳转指令

    条件跳转指令很多,支持根据有符号.无符号整数的比较以及对CPU状态标志的检查进行跳转的一系列指令. 根据特定的标志的 根据两操作数是否相等,或根据(E)CX的值是否相等 基于无符号操作数的比较结果的 ...

  3. C学习if条件判断和for循环

    通过学习if条件判断和for循环之后,做了一个实例.实现的实例都在代码中有详细的注释. #include <stdio.h>/******************************* ...

  4. activiti 条件表达式json报错_2020年2月13日学习python 条件控制

    2020年2月13日学习python 条件控制 所谓条件(condition):指的是成立的条件,即返回值是True的布尔表达式. 运行报错: def account_login(): passwor ...

  5. 汇编语言-008(条件跳转应用 、loopnz 条件循环指令使用 、loopz 条件循环指令使用 、 if语句编写汇编时 、while语句编写汇编时 、循环内的if语句嵌套)

    1: 条件跳转应用,三个数中最小数 .386 .model flat,stdcall.stack 4096 ExitProcess PROTO,dwExitCode:DWORD.data V1 WOR ...

  6. 汇编语言-007(ADD_SUB_NEG 、 PUSH和POP指令应用 、 AND,OR,XOR使用 、 条件跳转应用)

    1: ADD_SUB_NEG : ADD伪指令增加数值,SUB伪指令减少数值,NEG取反+1 .386 .model flat,stdcall.stack 4096 ExitProcess PROTO ...

  7. Python小白的数学建模课-17.条件最短路径算法

    条件最短路径问题,指带有约束条件.限制条件的最短路径问题.例如: 顶点约束,包括必经点或禁止点的限制: 边的约束,包括必经路段.禁行路段和单向路段:无权路径长度的限制,如要求经过几步或不超过几步到达终 ...

  8. 【汇编语言与计算机系统结构笔记07】条件码,比较、测试、条件跳转与条件转移指令,结合微体系结构与流水的说明

    本次笔记内容: 08.控制流-1 文章目录 条件码 基于add的CF, ZF, SF, OF 比较(Compare)指令 测试(Test)指令 读取条件码(SetX)指令 例子 拓展:流水设计与微体系 ...

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

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

最新文章

  1. MPB:湖南农大尹杰组-猪粪便来源乳酸菌分离技术
  2. python三个点画正弦线_python3绘图示例5(基于matplotlib:正弦图等)
  3. RHEAS 显示、输入中文
  4. 2020年11月全国程序员工资,新出炉!
  5. Latex中定理、引理、证明、假设、空白行
  6. neo4j merge
  7. uniapp前端处理接口返回一整个html格式
  8. python3d绘图代码_python机器学习之3D Matplotlib绘图
  9. inotify监控文件变化
  10. Opencv中rectangle函数与Rect函数的用法
  11. 电脑主板各部件详细图解
  12. 华为每天给武汉员工发2千块,任正非:我最擅长的事,就是分钱!
  13. iOS之推荐六款不错的 iOS 15 Safari 浏览器扩展
  14. 如何将CHM转换为PDF文件?
  15. 2023年全国最新二级建造师精选真题及答案25
  16. 基于JavaSwing开发模拟电梯系统+分析报告 课程设计 大作业源码
  17. 第二章:关系数据库 - 04735数据库系统原理 - 自考知识点
  18. 51nod 1298 圆与三角形
  19. 控制Unity物体的旋转
  20. 关于OSCE 的安装部署视频教程

热门文章

  1. windows聚焦壁纸不更新_壁纸推荐说 | 爱上你的壁纸,每天更新的免费壁纸软件dynamic theme...
  2. 用法与区别_生抽老抽、蚝油味极鲜,总算搞清楚区别了,用法大不同,别用错了...
  3. centos图形化桌面的文件在哪_CentOS 安装图形桌面
  4. css 样式面板,关于 CSS 样式面板
  5. transform限制position:fixed的跟随效果
  6. antd listView中onEndReached()失效
  7. 获取 HTML5 网页设计灵感的10个网站推荐
  8. 如何将html特殊字符编码转换成特殊字符_html十进制编码字符转回来
  9. 使用html css js实现计算器
  10. MongoDB非关系型数据库开发手册