版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。2019-09-06,21:59:16。
作者By-----溺心与沉浮----博客园

JCC指令决定它跳不跳转跟别的没关系,只跟EFLAG标志寄存器有关系!!!

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

有符号无符号的区别:大家有兴趣可以去尝试一下

CMP AL,CL

JG 0x12345678

JA 0x12345678

  这里我也不上图了,就简单列举一下,汇编指令的复习也就暂告一段落了,总算可以舒一口气了,虽然博文写了就十来篇,但笔者私底下的功课绝不止这么点,真的是要吐了。汇编的学习没别的,就是练,也不需要靠你去背,背来的东西迟早都会忘,但是忘的速度会很快。只有练到自己把自己恶心到,才能让自己把自己的功夫练到位!(当然笔者还没到那种境界,不然也不会重新来复习汇编了)真的!学汇编一定不要听信书上说的死记硬背!!!只有一句,忘死里练,练到把自己恶心得想锤爆电脑为止。

  当然我说汇编学习告一段落,也不是说真不去碰汇编了,汇编会长期伴随着我,因为后面的堆栈图,C语言逆向,C++逆向,汇编是一直紧随的,而且还会有新的汇编指令再去学,只是换个方向去了解汇编了。

  上面的JCC指令哗啦哗啦一摆一大堆,有人会问,靠!这怎么去记,这记得来么!如果你的英语有一点点底子的话,那恭喜你,完全不用去记了,去找大于,小于,等于,不等于英语单词就行,这些都是这英文单词的缩写。如果你英语差的话,也没事,反正都是跟if...else相关的,见多了,练多了,不用刻意去记,也会形成自然反射的记住的。

我下面借鉴他人文章,COPY这张表格,这张表格有JCC指令的英文单词全拼,可以帮助你更好的去理解JCC指令,注意结合我上面列出来的有符号的大于小于,和无符号的大于小于

指令 英文 中文
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 检验为奇

版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。2019-09-06,21:59:16。
作者By-----溺心与沉浮----博客园

大家有兴趣可以尝试一下这道题,尝尝鲜。对JCC理解会有很好的帮助。

作业:使用汇编指令修改标志寄存器中的某个位的值,实现JCC的十六种跳转.

条件1、不允许在OD中通过双击的形式修改标志寄存器.

条件2、要通过汇编指令的执行去影响标志位,能用CMP和TEST实现的优先考虑.

汇编之JCC指令的更多相关文章

  1. JCC 指令

    JCC跳转指令 JCC指条件跳转指令,CC就是指条件码. JCC指令 中文含义 英文原意 检查符号位 典型C应用 JZ/JE 若为0则跳转:若相等则跳转 jump if zero;jump if eq ...

  2. 针对JCC指令练习的堆栈图

    堆栈图,主要目的就是练习一下JCC指令的熟练度,供参考 版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明.2019-09-10,23:41:41.作者By-----溺心与沉浮----博客园 ...

  3. 汇编总结:mov指令

    mov指令的作用: mov指令可能是汇编里用的最多的指令了,完成c语言里的赋值. mov指令种类: 1.普通的mov指令 2.做符号扩展的movs 3.做零扩展的movz 1.普通mov的种类有: m ...

  4. 8051汇编:EQU指令

    关于EQU汇编指令 EQU是英文单词equal的缩写,因此我们也能对EQU指令有一个初步的认识:做等价替换使用. 在8051汇编语言中,EQU用于定义一个符号常量,其效果不会带来存储空间的占用(这和C ...

  5. 汇编 REPE/REPZ 指令,CMPSB指令

    知识点: REPE/REPZ 指令 CMPSB 指令 一.CMPSB //cmp //sub //SCASB//scasw//scasd cmp byte ptr [edi],al //对标志位的 ...

  6. Win32汇编之其他指令

    汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地 ...

  7. Win32汇编常用算数指令

    汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地 ...

  8. 学 Win32 汇编[21] - 传送指令: MOV、LEA、XCHG、XLATB、XLAT、MOVZX、MOVSX

    汇编指令的一般性要求: 1.两个操作数的尺寸必须一致; 2.操作数不能同为内存. MOV(Move): 最常用的数据传送指令 ;该指令不影响 EFlags ;指令格式: (其中的 r.m.i 分别表示 ...

  9. ARM 汇编 内存访问指令

    一. 单个寄存器操作读写内存 内存访问指令格式:<opcode><cond> Rd, [Rn] Rn 中保存的是一个内存的地址值 1. 内存写指令  [ str,strb,st ...

随机推荐

  1. linux scp命令 将数据从一台linux服务器复制到另一台linux服务器

    scp是secure copy的简写,用于在Linux下进行远程拷贝文件的命令,和它类似的命令有cp,不过cp只是在本机进行拷贝不能跨服务器,而且scp传输是加密的.可能会稍微影响一下速度.当你服务器 ...

  2. .net core 发布IIS 出现Http 500错误

    首先再webconfig中设置stdoutLogEnabled="true",然后运行之后,到logs中查看登陆错误日志. 根据不同的错误进行解决: 我的错误是发布文件夹中缺少Dw ...

  3. Maven 跳过Junit单元测试

    转载自:https://blog.csdn.net/arkblue/article/details/50974957 -DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至 ...

  4. Rust,重温猜猜看

    其实,这个知识点蛮多的, 常看常新. use std::io; use std::cmp::Ordering; use rand::Rng; fn main() { println!("Gu ...

  5. vue.nextTick()方法的使用详解

    什么是Vue.nextTick()??   定义:在下次 DOM 更新循环结束之后执行延迟回调.在修改数据之后立即使用这个方法,获取更新后的 DOM. 所以就衍生出了这个获取更新后的DOM的Vue方法 ...

  6. python27期jquery:

    JavaScript:(简称“JS”) 是一种轻量级的编程语言(ECMAscript5或6)是一种解释性脚本语言(代码不进行预编译)主要用来向HTML页面添加交互行为JavaScript 是互联网上最 ...

  7. UTC和GMT什么关系?moment处理世界时问题

    UTC和GMT什么关系? 个人理解,两者基本一样,要说区别,那就是UTC更准确,而GMT误差有点.由于历史原因,以前用GMT,后来发现有些误差,改用UTC 我们可以看到,JS的 Date() 用的是G ...

  8. golang module 在 spacemcs 中的配置

    概述 golang 官方的包管理从 1.11 版本就开始支持了, 之前尝试了几次, 效果都不理想, 就一直用 dep 来管理 package. 最近 1.13 版本发布了, 使用 go module ...

  9. OpenCV 相机标定 findChessboardCorners() 与 cornerSubPix() 函数

    OpenCV 官方文档 findChessboardCorners():Finds the positions of internal corners of the chessboard. bool ...

  10. 什么是IDE(集成开发环境)?

    实际开发中,除了编译器是必须的工具,我们往往还需要很多其他辅助软件,例如: 编辑器:用来编写代码,并且给代码着色,以方便阅读: 代码提示器:输入部分代码,即可提示全部代码,加速代码的编写过程: 调试器 ...