汇编之JCC指令
版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明。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指令的更多相关文章
- JCC 指令
JCC跳转指令 JCC指条件跳转指令,CC就是指条件码. JCC指令 中文含义 英文原意 检查符号位 典型C应用 JZ/JE 若为0则跳转:若相等则跳转 jump if zero;jump if eq ...
- 针对JCC指令练习的堆栈图
堆栈图,主要目的就是练习一下JCC指令的熟练度,供参考 版权声明:本文为博主原创文章,转载请附上原文出处链接和本声明.2019-09-10,23:41:41.作者By-----溺心与沉浮----博客园 ...
- 汇编总结:mov指令
mov指令的作用: mov指令可能是汇编里用的最多的指令了,完成c语言里的赋值. mov指令种类: 1.普通的mov指令 2.做符号扩展的movs 3.做零扩展的movz 1.普通mov的种类有: m ...
- 8051汇编:EQU指令
关于EQU汇编指令 EQU是英文单词equal的缩写,因此我们也能对EQU指令有一个初步的认识:做等价替换使用. 在8051汇编语言中,EQU用于定义一个符号常量,其效果不会带来存储空间的占用(这和C ...
- 汇编 REPE/REPZ 指令,CMPSB指令
知识点: REPE/REPZ 指令 CMPSB 指令 一.CMPSB //cmp //sub //SCASB//scasw//scasd cmp byte ptr [edi],al //对标志位的 ...
- Win32汇编之其他指令
汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地 ...
- Win32汇编常用算数指令
汇编语言(assembly language)是一种用于电子计算机.微处理器.微控制器或其他可编程器件的低级语言,亦称为符号语言.在汇编语言中,用助记符(Mnemonics)代替机器指令的操作码,用地 ...
- 学 Win32 汇编[21] - 传送指令: MOV、LEA、XCHG、XLATB、XLAT、MOVZX、MOVSX
汇编指令的一般性要求: 1.两个操作数的尺寸必须一致; 2.操作数不能同为内存. MOV(Move): 最常用的数据传送指令 ;该指令不影响 EFlags ;指令格式: (其中的 r.m.i 分别表示 ...
- ARM 汇编 内存访问指令
一. 单个寄存器操作读写内存 内存访问指令格式:<opcode><cond> Rd, [Rn] Rn 中保存的是一个内存的地址值 1. 内存写指令 [ str,strb,st ...
随机推荐
- [b0028] python 归纳 (十三)_队列Queue在多线程中使用
# -*- coding: UTF-8 -*- """ 多线程同时读队列 总结: 1. 会阻塞 if self._jobq.qsize() > 0 进入逻辑,此时被 ...
- oracle通过impdp导入不同表用户、不同表空间的数据
原创 tegwy 发布于2013-04-21 17:34:39 阅读数 46592 收藏 展开 impdp smtj2012/密码@localhost/devdb DIRECTORY=dump_dir ...
- Linux—主机扫描工具(Nmap)
Nmap包含五项基本功能: 主机探测 (Host Discovery) 端口扫描 (Port Scanning) 版本检测 (Version Detection) 操作系统侦测 (Operating ...
- fiddler---Fiddler弱网测试
无论是做web端还是app端的测试,我们都需要对弱网进行测试,对于弱网方法有很多种,如:Fiddler模拟弱网,控制电脑的网速等,今天介绍下Fiddler如何进行测试弱网 什么是弱网 弱网看字面意思就 ...
- arXiv网站
arXiv 原先是由物理学家保罗·金斯巴格在1991年建立的网站, 我们会将预稿上传到arvix作为预收录,因此这就是个可以证明论文原创性(上传时间戳)的文档收录网站.
- lua 13 模块(类似class)与包
转自: http://www.runoob.com/lua/lua-modules-packages.html 模块类似于一个封装库,从 Lua 5.1 开始,Lua 加入了标准的模块管理机制,可以把 ...
- luoguP3346 [ZJOI2015]诸神眷顾的幻想乡
题意 学习了广义后缀自动机. 广义后缀自动机与普通后缀自动机的区别在于它是对多个串建的,于是可以处理多个串. 广义后缀自动机和普通后缀自动机的区别在于两个特判,可以见这篇题解 对于这题,因为叶子数量小 ...
- OpenStack I18N
OpenStack I18N 官方文档: https://docs.openstack.org/oslo.i18n/latest/user/usage.html https://docs.openst ...
- NOIP模拟赛 拓展
题目描述 Description \(φ\) 函数是数论中非常常用的函数.对于正整数 \(x\) ,\(φ(x)\) 表示不超过 \(x\) 的所有正整数与 \(x\) 互质的个数. 现在我们对它进行 ...
- gradle初学可能遇到的问题
gradle的脚本文件名称必须是build.gradle,如果自学的时候随便起的名字测试.如:test.gradle,脚本执行的时候是找不到相对于的任务的.会报错