条件跳转表

汇编语言-条件跳转指令

直接转移指令
指令格式 机器码 测试标志 条件说明 符号
 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"也可以根据标志寄存器的相关标志位进行转移;

x86汇编 条件跳转的更多相关文章

  1. 汇编 sub减法指令 比较指令CMP JZ条件跳转指令

    二.SUB指令 减法指令SUB (SUBtract) 格式: SUB A,B //A=A-B; 功能: 两个操作数的相减,即从A中减去B,其结果放在A中. 二.CMP 和JZ 指令 比较指令CMP 格 ...

  2. 对X86汇编的理解与入门

    本文描述基本的32位X86汇编语言的一个子集,其中涉及汇编语言的最核心部分,包括寄存器结构,数据表示,基本的操作指令(包括数据传送指令.逻辑计算指令.算数运算指令),以及函数的调用规则.个人认为:在理 ...

  3. 寄存器理解 及 X86汇编入门

    本文整理自多材料源,感谢原址分享,请查看末尾Url I, 汇编语言分类: 汇编语言和CPU息息相关,但是不能把汇编语言完全等同于CPU的机器指令.不同架构的CPU指令并不相同,如x86,powerpc ...

  4. X86汇编概要

    来自:https://www.cnblogs.com/jiftle/p/8453106.html 本文翻译自:http://www.cs.virginia.edu/~evans/cs216/guide ...

  5. x86汇编之十(使用字符串)

    x86汇编之十(使用字符串) 转自网络,出处不详 一.传送字符串 Intel提供了完整的字符串传送指令,就像是MOV指令一样. 1.MOVS指令 1)movs指令格式 把字符串从一个位内存位置传送到另 ...

  6. X86汇编——计算斐波那契数列程序(详细注释和流程图说明)

    X86汇编实现斐波那契数列 程序说明: 输入斐波那契数列的项数, 然后依次输出斐波那契数列, 输入的项数小于256且为数字, 计算的项数不能超过2^16次方, 输入失败是 不会回显数字 因为存结果是A ...

  7. x86汇编反编译到c语言之——(2)if语句

    一. 测试的C语句及编译后的x86汇编代码 int a; int b; int main(void) { int c; if (c) a = 4; else b = 5; return 0; } 1 ...

  8. 汇编条件判断整理(JCC,CMP/TEST的实现)

    比较的实现 我们知道CMP是比较两个寄存器内容的指令,但这是如何实现的? 当执行到CMP指令的时候会读取这两个寄存器的内容,并加以减法运算,结果本身不保留,并按照结果设置符号位(属算术运算). CMP ...

  9. x86汇编指令脚本虚拟机

    简介 这是一个可以直接解释执行从ida pro里面提取出来的x86汇编代码的虚拟机. 非常精简,整体架构上不能跟那些成熟的虚拟机相比,主要目标是够用.能用.轻量就行,如果觉得代码架构设计的不是很好的话 ...

随机推荐

  1. bye MVA

    bye MVA https://mva.microsoft.com/

  2. website & blogs & about me & contact

    website & blogs & about me & contact demos https://davidwalsh.name/about-david-walsh htt ...

  3. Object to Array

    Object to Array objectToArray(obj = {}, title = `标题`){ let datas = []; if(Object.keys(obj).length) { ...

  4. MongoDB的下载、安装与部署

    1.什么是MongoDB? 它是介于关系型数据库和非关系型数据库之间的一种NoSQL数据库,用C++编写,是一款集敏捷性.可伸缩性.扩展性于一身的高性能的面向文档的通用数据库. 2.为什么要用Mong ...

  5. RocketMq灰皮书(三)------MQ使用

    RocketMq灰皮书(三)------MQ使用 在使用MQ之前,我们回顾一下前两篇博文的内容. 我们大致了解了RocketMQ的四个概念,分别是:Producer,Consumer,Message和 ...

  6. django学习-23.admin管理后台的数据表数据的自定义展示

    目录结构 1.前言 2.自定义设置一张指定的数据表的列表展示内容 2.1.第一步:如果我们想让数据表[hello_person]里面的表字段值全部展示出来,需在应用[hello]里的[admin.py ...

  7. JVM性能调优经验总结

    本文转载自JVM性能调优经验总结 说明 调优是一个循序渐进的过程,必然需要经历多次迭代,最终才能换取一个较好的折中方案. 在JVM调优这个领域,没有任何一种调优方案是适用于所有应用场景的,同时,切勿极 ...

  8. 解决margin-top无效问题

    当两个空的块级元素嵌套时,如果内部的块设置有margin-top属性,而且父元素没有下边解决方法所述的特征,那么内部块的margin-top属性会绑架父元素(即将margin-top传递凌驾给了父元素 ...

  9. 2021 年学习 React 的所需要的 JavaScript 基础

    在理想的情况中,您可以先了解所有有关 JavaScript 和 web 开发的知识,然后再深入了解React. 但是,我们没有办法这样,如果等你把所有 JavaScript 的知识都掌握了再去学习 R ...

  10. Glibc堆管理机制基础

    最近正在学习linux下堆的管理机制,收集了书籍和网络上的资料,以自己的理解做了整理,做个记录.如果有什么不对的地方欢迎指出! Memory Allocator 常见的内存管理机制 dlmalloc: ...