JCC指令

0、JMP
1、JE, JZ 结果为零则跳转(相等时跳转) ZF=1
2、JNE,
JNZ 结果不为零则跳转(不相等时跳转) ZF=0
3、JS   结果为负则跳转   SF=1
4、JNS   结果为非负则跳转       SF=0
5、JP,
JPE    结果中1的个数为偶数则跳转  PF=1
6、JNP, JPO  
 结果中1的个数为偶数则跳转      PF=0
7、JO     结果溢出了则跳转       OF=1
8、JNO     结果没有溢出则跳转  OF=0
9、JB,
JNAE    小于则跳转 (无符号数)  CF=1
10、JNB, JAE   大于等于则跳转 (无符号数) 
 CF=0
11、JBE, JNA   小于等于则跳转 (无符号数)  CF=1 or ZF=1
12、JNBE, JA   大于则跳转(无符号数)  CF=0 and ZF=0
13、JL, JNGE   小于则跳转 (有符号数)  SF≠ OF
14、JNL, JGE   大于等于则跳转 (有符号数)  SF=OF
15、JLE, JNG   小于等于则跳转 (有符号数)      ZF=1 or SF≠ OF
16、JNLE, JG   大于则跳转(有符号数)  ZF=0 and SF=OF

指令 英文 中文
je Equal 等于
jne Not Equal 不等于
jg Creater  大于
jge Creater or Equal 大于等于
jng Not Greater 不大于
jnge Not Greater or Equal 不大于等于
jl Less 小于
jle Less or Equal 小于等于
jnl Not Less 不小于
jnle Not Less or Equal 不小于等于
ja Above 高于
jae Above or Equal 高于等于
jna Not Above 不高于
jnae Not Above or Equal 不高于等于
jb Below 低于
jbe Below or Equal 低于等于
jnb Not Below 不低于
jnbe Not Below or Equal 不低于等于
jpe Parity Even 校验为偶
jpo Parity Odd 检验为奇

非常显而易见的是,如果你英语基础比较好,认识上面那些单词的话,这些指令都可以在短时间内轻松记住。英语基础不太好的人也不要灰心,事实上,根本不需要记住这些指令和它们的测试条件,因为我们平时很少用得了这么多。需要的时候再回过头来查查,这是个好办法,时间一长,自然就记住了。
最后一个要讲述的条件转移指令是
jcxz(jump if CX is
zero),意思是当CX寄存器的内容为零时则转移。执行这条指令时,处理器先测试寄存器CX是否为零。例如: jcxz show
这里,“show”是程序中的一个标号。执行这条指令时,如果CX寄存器的内容为零,则转移;否则不转移,继续往下执行。

时间: 2024-08-09 16:22:52

JCC指令的相关文章

JCC

一.简单认识JCC指令(也可以改EIP的寄存器但得看条件) 由下图可以看出JCC指令和很多标志寄存器有关 标志寄存器的不一样也就表示JCC指令的含义不同 所以 学习JCC指令实际上是学习标志寄存器 二.标志寄存器(32位) 2.1 CF位(判断无符号数运算之后结果有没有溢出) 当无符号数发生进位或借位的时候,CF就是1,否则就是0 2.2 PF位(奇偶校验位) 注意是最低有效字节  也就是最后一个不为全0 的字节 2.3 AF位(辅助进位标志 很少用到) 2.4 ZF位(常见) 很好理解 CMP

汇编--控制转移指令 jmp

跳转指令分三类:一.无条件跳转: JMP;二.根据 CX.ECX 寄存器的值跳转: JCXZ(CX 为 0 则跳转).JECXZ(ECX 为 0 则跳转);三.根据 EFLAGS 寄存器的标志位跳转, 这个太多了. JMP 无条件转移指令 1.段内直接短转移 2.段内直接近转移 3.段内间接近转移 4.段间直接远转移 5.段间间接远转移 条件转移指令 1)根据单个条件标志的设置情况转移: JZ(JE) ;为 0(等于) 则跳转 jump if zero, JNZ(JNE) ;不为 0(等于) 则

汇编语言转移指令规则汇总

摘要:虽然jmp指令提供了控制转移,但是它不允许进行任何复杂的判断.80x86条件跳转指令提供了这种判断.条件跳转指令是创建循环和实现其他条件执行语句,如if…endif的基本要素. 条件跳转指令检查一个或多个标志位,判断它们是否匹配某个特殊条件(就像setcc指令):如果标志匹配成功,该指令就将控制转移到目标位置:如果匹配失败,CPU忽略该条件跳转指令而继续执行下一条指令.一些条件跳转指令只是简单测试符号位(sign).进位位(carry).溢出位(overflow).零标志(zero)位的设

汇编器构造

@import url(http://i.cnblogs.com/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css); 汇编器构造   一.             汇编器简介 前面介绍了编译器构造和静态链接器构造的具体方法,而且我们实现了一个将高级语言转化为汇编语言的编译器,同时又实现了一个将多个目标文件链接为一个可执行文件的链接器.现在需要一个连接这两个模块的功能模块——汇编器,它

深入理解Windows X64调试

随着64位操作系统的普及,都开始大力进军x64,X64下的调试机制也发生了改变,与x86相比,添加了许多自己的新特性,之前学习了Windows x64的调试机制,这里本着“拿来主义”的原则与大家分享. 本文属于译文,英文原文链接:http://www.codemachine.com/article_x64deepdive.html 翻译原文地址:深入Windows X64 调试 在正式开始这篇译文之前,译者先定义下面两个关于栈帧的翻译: frame pointer:栈帧寄存器.栈帧指针,在X86

C语言与汇编语言对照分析

游戏通常会包含各种各样的功能,如战斗系统.UI渲染.经济系统.生产系统等,每个系统又包含各式各样子功能,如伤害判定.施法.使用道具.角色移动.玩家之间交易等等.这些游戏功能在代码实现中往往少不了条件判断(如伤害判定).循环(遍历物品列表,播放游戏动画)等. 在逆向过程中如果可以从汇编语言识别出对应的语法结构,在分析过程中将汇编代码转换为C语言语法结构,可以帮助对程序执行流程的理解. 下面分别介绍最常见的逻辑语法结构: a) if...else b) switch...case c) for.wh

Goldwave-5.7[逆向流程+算法分析]

目标程序:Goldwave 5.7 分析工具: 1.OllyDbg 2.IDAPro 目的:用C语言写Goldwave-5.7的注册机. 0x0思路: 1.注册机准备: 功能:输入用户名后经过计算输出注册码. 函数:需要一个关键的计算函数. 2.实现注册机的计算函数: 计算函数可视为Goldwave的验证注册码函数的反向实现. 那么实现该计算函数的步骤如下: 1.定位关键注册函数. 2.分析关键注册函数. 3.复现关键注册函数. 4.反向复现计算函数. 步骤: 1.通过软件交互关系,定位关键函数

if语句,if...else语句的分析

if语句的反汇编判断 if语句的反汇编判断基本是围绕JCC指令的,如果想要有深刻的理解,可以自行练习JCC指令 执行各类影响标志位的指令 jxx xxxx 1.案例一 mov eax,dword ptr [ebp+8] 分析:cmp指令 影响标志位 cmp eax,dword ptr [ebp+0Ch]      jle :小于或者等于就跳转到00401059 jle 00401059 2.案例二 mov eax,dword ptr [ebp+8] 分析:cmp指令 影响标志位 cmp eax,

MinHook测试与分析(x86下 E8,E9,EB,CALL指令测试,且逆推测试微软热补丁)

依稀记得第一次接触Hook的概念是在周伟民先生的书中-><<多任务下的数据结构与算法>>,当时觉得Hook的本质就是拦截,就算到现在也是如此认为. 本篇文章是在x86下测试与分析跳转+offset类型的Hook,并且逆推测出热补丁的简单用法,MinHook它的中心就是覆盖重写并且可以复原.知道大概的思路后后让我们先来具体的实现MinHook再去做测试. 首先是堆的申请,这是必要也必须做的,对于微软函数HeapCreate()就不再赘述,以下是实现与卸载 1 NTSTATUS