版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。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. Tomcat启动分析(二)-自己编译Tomcat

    为了方便分析Tomcat源码,利用大家习惯的方式来进行Debug调试,那么如何将Tomcat源码导入到Eclipse呢,这就是本文的重点 1 准备 1.1 获取Tomcat源码 获取tomcat源码有 ...

  2. linux基础学习(一)常用命令:date、pwd、cd、cal、who、wc等等

    目录 @(基础命令) Tab键是linux系统中最重要的键之一了,它的功能是命令自动补全== [root@localhost ~]#date 1.用于显示当前的日期和时间 2/用于显示当前的日历 [r ...

  3. [PHP] 持续交付Jenkins安装

    1.下载并运行 Jenkins下载 Jenkins.http://mirrors.jenkins.io/war-stable/latest/jenkins.war 打开终端进入到下载目录.运行命令 j ...

  4. 【CobaltStrike】对CobaltStrike内置功能模块的了解

    对CobaltStrike内置功能模块的了解 0x00 右键功能列表 Interact 打开beacon Access dump hashes 获取hash Elevate 提权 Golden Tic ...

  5. Caused by: com.mysql.cj.exceptions.InvalidConnectionAttributeException: The server time zone value '�й���׼ʱ��' is unrecognized or represents more than one time zone. You must configure either the serv

    z 此问题为时区问题,在 JDBC 的连接 url 部分加上 useSSL=true&serverTimezone=UTC 即可.如图

  6. 监控类shell脚本

    1)开头加解释器:#!/bin/bash 2)语法缩进,使用四个空格:多加注释说明. 3)命名建议规则:变量名大写.局部变量小写,函数名小写,名字体现出实际作用. 4)默认变量是全局的,在函数中变量l ...

  7. 简单web服务工作流程梳理

       一.用户访问web基本流转过程梳理 二.web框架粗略概括

  8. 3. Vue - 指令系统

    一.vue指令 (1) v-if // 条件判断 如果条件成立就在页面上生成一个标签并显示出来 (2) v-show //DOM中都存在只是显示与否 (3) v-for //注意 v-bind:key ...

  9. 7. Go语言—时间模块

    一.时间模块 1. 统计程序执行时间 package main import ( "time" "fmt" ) func test() { time.Sleep ...

  10. 2. Go语言—包概念

    一.包的概念 和python一样,把相同功能的代码放到一个目录,称之为包 包可以被其他包引用(若包中变量/函数被其他包调用,名需大写) main包是用来生成可执行文件,每个程序只有一个main包 包的 ...