汇编语言-条件跳转指令

转载 2016年08月29日 18:00:03

http://bdxnote.blog.163.com/blog/static/84442352015327011988/


直接转移指令
指令格式 机器码 测试标志 条件说明 符号
 JO       OPR 70  OF=1  结果有溢出  
 JNO      OPR 71  OF=0  结果无溢出  
 JC       OPR 72  CF=1  小于  <
 JNC      OPR 73  CF=0  大于或等于  >=
 JZ/JE    OPR 74  ZF=1  结果为0  ==
 JNZ/JNE  OPR 75  ZF=0  结果非0  !=
 JS       OPR 78  SF=1  结果为负  <0
 JNS      OPR 79  SF=0  结果为正  >0
 JP/JPE   OPR 7A  PF=1  结果中1的个数为偶数  
 JNP/JPO  OPR 7B  PF=0  结果中1的个数为奇数  


间接转移指令-无符号数
指令格式 机器码 测试标志 条件说明 符号
 JB/JNAE  OPR 72  CF=1  低于/不高于且不等于  <
 JNB/JAE  OPR 73  CF=0  不低于/高于或等于  >=
 JBE/JNA  OPR 76  (CF=1)|(ZF=1)  低于或等于/不高于  <=
 JNBE/JA  OPR 77  (CF=0)&(ZF=0)  不低于且不等于/高于  >

间接转移指令-有符号数
指令格式 机器码 测试标志 条件说明 符号
 JL/JNGE  OPR 7C  (SF^OF)=1  小于/不大于且不等于  <
 JNL/JGE  OPR 7D  (SF^OF)=0  不小于/大于或等于  >=
 JLE/JNG  OPR 7E  (SF^OF)=1|(ZF=1)  小于或等于/不大于  <=
 JNLE/JG  OPR 7F  (SF^OF)=0&(ZF=0)  不小于且不等于/大于  >

理解方法:
N: Not
E: Equal
A: Above
B: Below
L: Less    (Little的比较级)
G: Greater (Great的比较级)

Less Than   : 小于
Greater Than: 大于

(SF^OF)=1 --> SF=0,OF=1 --> a < b
              SF=1,OF=0 --> a < b

(SF^OF)=0 --> SF=1,OF=1 --> a >  b
              SF=0,OF=0 --> a >= b                          

条件跳转指令是根据标志寄存器中的相关标志位的值来进行跳转的,因此,条件跳转指令只能与那些能够影响标志寄存器的相关标志位的指令配合使用;
能够直接影响标志寄存器的相关标志位的指令有:
1、算术运算指令 : add、sub、adc、sbb、inc、dec、neg、mul、div、imul、idiv,等等;
2、按位逻辑运算 : and、or、xor、not,等等;
3、比较运算指令 : cmp、test;
4、移位操作指令 : shr、shl、sar、sal、ror、rol、rcr、rcl;
5、BCD数调整指令: aaa、aas、daa、das、aam、aad;
6、标志处理指令 : clc、stc、cmc、cld、std、cli、sti;

能够间接影响标志寄存器的相关标志位的指令序列有:
pushf --> pop eax --> modify eax --> push eax --> popf
即:
pushf
pop eax
modify eax
push eax
popf
jbe OPR
这样的一系列操作之后,条件转移指令"jbe OPR"也可以根据标志寄存器的相关标志位进行转移;

相关文章推荐

关于汇编跳转指令的说明

 关于汇编跳转指令的说明 2008-05-17 12:28:25        虽然jmp指令提供了控制转移,但是它不允许进行任何复杂的判断。80x86条件跳转指令提供了这种判断。条件跳转指令是创建循...
  • linwy728
  • linwy728
  • 2009年11月14日 09:13
  • 10681

32位汇编语言学习笔记(7)--跳转指令

 正常情况下,指令是按照顺序执行的,跳转指令会导致程序的执行切换到一个新位置。 jmp跳转指令是无条件跳转指令。 可以是直接跳转,即跳转指令的目的地址通常由标号指明。也可以是间接...

Delphi7高级应用开发随书源码

  • 2003年04月30日 00:00
  • 676KB
  • 下载

汇编跳转指令总结

虽然jmp指令提供了控制转移,但是它不允许进行任何复杂的判断。80x86条件跳转指令提供了这种判断。条件跳转指令是创建循环和实现其他条件执行语句。条件跳转指令检查一个或多个标志位,判断它们是否匹配某个...

汇编语言跳转总结

转载链接转载链接跳转指令分三类:一、无条件跳转:JMP ;无条件跳转二、根据CX、ECX寄存器的值跳转:JCXZ ;CX 为 0 则跳转 JECXZ;ECX 为 0 则跳转三、根据EFLAGS寄存器...

linux平台学x86汇编(八):条件跳转

【版权声明:尊重原创,转载请保留出处:blog.csdn.net/shallnet,文章仅供学习交流,请勿用于商业用途】         在此之前我们使用的汇编代码示例都是从第一条指令开始,直到最...

汇编跳转指令

名称 功能 操作数 操作码 模数 寄存器1 寄存器2或内存 位移量 立即数 符号 方向 芯片型号 16位 32位 JO 溢出跳转 短 $70 无 无 无...
  • B_H_L
  • B_H_L
  • 2014年04月12日 11:41
  • 2184

Python学习笔记(五)——模块|图形界面|网络编程

0x09 内建模块 1、datetime 获取当前日期和时间 我们先看如何获取当前日期和时间: >>> from datetime import datetime >>> now ...
  • Yx0051
  • Yx0051
  • 2017年09月04日 09:02
  • 126

python中的md5和sha1加密算法使用

MD5        MD5的全称是Message-Digest Algorithm 5(信息-摘要算法),在90年代初由MIT Laboratory for Computer Science和RS...

汇编条件跳转指令总结

  • 2013年05月25日 19:35
  • 74KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:汇编语言-条件跳转指令
举报原因:
原因补充:

(最多只允许输入30个字)