x86汇编 条件跳转
条件跳转表


汇编语言-条件跳转指令
| 直接转移指令 | ||||
|---|---|---|---|---|
| 指令格式 | 机器码 | 测试标志 | 条件说明 | 符号 |
| 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汇编 条件跳转的更多相关文章
- 汇编 sub减法指令 比较指令CMP JZ条件跳转指令
二.SUB指令 减法指令SUB (SUBtract) 格式: SUB A,B //A=A-B; 功能: 两个操作数的相减,即从A中减去B,其结果放在A中. 二.CMP 和JZ 指令 比较指令CMP 格 ...
- 对X86汇编的理解与入门
本文描述基本的32位X86汇编语言的一个子集,其中涉及汇编语言的最核心部分,包括寄存器结构,数据表示,基本的操作指令(包括数据传送指令.逻辑计算指令.算数运算指令),以及函数的调用规则.个人认为:在理 ...
- 寄存器理解 及 X86汇编入门
本文整理自多材料源,感谢原址分享,请查看末尾Url I, 汇编语言分类: 汇编语言和CPU息息相关,但是不能把汇编语言完全等同于CPU的机器指令.不同架构的CPU指令并不相同,如x86,powerpc ...
- X86汇编概要
来自:https://www.cnblogs.com/jiftle/p/8453106.html 本文翻译自:http://www.cs.virginia.edu/~evans/cs216/guide ...
- x86汇编之十(使用字符串)
x86汇编之十(使用字符串) 转自网络,出处不详 一.传送字符串 Intel提供了完整的字符串传送指令,就像是MOV指令一样. 1.MOVS指令 1)movs指令格式 把字符串从一个位内存位置传送到另 ...
- X86汇编——计算斐波那契数列程序(详细注释和流程图说明)
X86汇编实现斐波那契数列 程序说明: 输入斐波那契数列的项数, 然后依次输出斐波那契数列, 输入的项数小于256且为数字, 计算的项数不能超过2^16次方, 输入失败是 不会回显数字 因为存结果是A ...
- 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 ...
- 汇编条件判断整理(JCC,CMP/TEST的实现)
比较的实现 我们知道CMP是比较两个寄存器内容的指令,但这是如何实现的? 当执行到CMP指令的时候会读取这两个寄存器的内容,并加以减法运算,结果本身不保留,并按照结果设置符号位(属算术运算). CMP ...
- x86汇编指令脚本虚拟机
简介 这是一个可以直接解释执行从ida pro里面提取出来的x86汇编代码的虚拟机. 非常精简,整体架构上不能跟那些成熟的虚拟机相比,主要目标是够用.能用.轻量就行,如果觉得代码架构设计的不是很好的话 ...
随机推荐
- os-hackNOS-2(wp5.3本地文件包含 rbash绕过)
一.信息收集 直接netdiscover,找到IP是 192.168.56.101 然后端口扫描一波 只打开了22和80端口,访问一下80端口,是apache首页,那就继续查目录赛.,发现了一个tsw ...
- React LifeCycle API
React LifeCycle API old API & new API 不可以混用 demo https://codesandbox.io/s/react-parent-child-lif ...
- js in depth: event loop & micro-task, macro-task & stack, queue, heap & thread, process
js in depth: event loop & micro-task, macro-task & stack, queue, heap & thread, process ...
- js 反应&行动
反应 class Reaction { _page = 1; get page() { return this._page; } set page(newValue) { this._page = n ...
- 「NGK每日快讯」12.22日NGK第49期官方快讯!
- django学习-2.urls.py和view.py的相关知识点
1.URL函数简单解析 1.1.url() 函数可以接收四个参数,分别是两个必选参数:regex.view,和两个可选参数:kwargs.name. def url(regex, view, kwar ...
- H5 常见问题汇总及解决方案
原文链接:http://mp.weixin.qq.com/s/JVUpsz9QHsNV0_7U-3HCMg H5 项目常见问题汇总及解决方案 -- 由钟平勇分享 转自 https://github.c ...
- 深入剖析 ConcurrentHashMap
自建博客地址:https://bytelife.net,欢迎访问! 本文为博客自动同步文章,为了更好的阅读体验,建议您移步至我的博客 本文作者: Jeffrey 本文链接: https://bytel ...
- idea分布式创建子模块后不能创建java文件
问题描述:多模块情况下,创建java文件,找不到java类,如下图,即使手动创建,在里面编写内容也没有任何反应. 解决方案:右键将文件标记为Sources Root便可以了,如果想要标记为资源文件的话 ...
- Nginx(八): 观进程锁的实现
前面的nginx系列讲解了nginx很多通用概念,流程,以及核心的http模块的一些实现.应该说大体上对nginx已经不再陌生和神秘. 今天我们不看全局,只看一个非常非常小的细节:nginx是多进程并 ...