JCC指令(详细版)

JCC指令(详细版)JCC JumpifCondit 是 x86 汇编语言中的一类条件跳转指令 用于根据特定条件来执行跳转操作

大家好,欢迎来到IT知识分享网。

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

前言

一、JCC是什么?

二、常见指令

1.文字版说明

2.flage寄存器

总结



前言

JCC(Jump if Condition is met)是x86汇编语言中的一类条件跳转指令,用于根据特定条件来执行跳转操作。

JCC指令根据不同的条件码标志位的状态来判断是否满足条件,如果满足条件,则跳转到指定的目标地址;如果不满足条件,则继续顺序执行下一条指令。

一、JCC是什么?

二、常见指令

JCC指令(详细版)

1.文字版说明

2.flage寄存器

JCC指令(详细版)

三、上面整体了解一下,接下来开始深入讲解:

汇编-JCC

所有JCC指令的动作->根据标志寄存器修改EIP的值

标志寄存器 EFLAGS

1.CF(bit 0)[Carry flag] C位

若算术产生的结果在最高有效位(most-significant bit)发生进位或者借位则将其置1 反之清零

这个标志通常用来指示无符号证书运算的溢出状态

宽度溢出位。只要容器内放不下就会发生变化

MOV AL,0xFE ADD AL,2 C => 1 MOV AL,0x7F SBU AL,0xFF C => 1

PF (bit 2) [parity flag] P位 奇偶校验位

如果结果的最低有效字节 最后一个字节(least-significant byte)包含偶数个1位则该位置1,否则清零

利用PF可进行奇偶校验检查

MOV AL,0xCE

AF (bit 4)[Auxiliary Carry Flag] 辅助进位标志器

如果算术操作在结果的第三位发生进位或者借位则该标志置1,否则清零

这个标志在BCD(binary-code decimal) 算术运算中被使用

ZF(bit 5)[Zero Flag] 用的最多 划重点。。

例1: 判断2个值是否相等

MOV EAX,100 MOV ECX,100 CMP EAX,ECX

(CMP指令相当于SUB指令,但是相减的结果并不保存到第一个操作数中 只影响标志寄存器)

例2:判断某个值是否为0

AND EAX,EAX 0 ZF=1 TEST EAX,EAX

(TEST相当于and,但是与运算的结果并不保存到第一个操作数中 只影响标志寄存器)

SF(bit 7) [Sign Flag]

当然如果是无符号数运算就不用看了

只看容器内数字的最高位

MOV AL,0x7F MOV AL,0xFE ADD AL,2 ADD AL,2

OF(bit 11)[OverFlow Flag]

MOV AL,0x7F ADD AL,2

DF(bit 10)[Diretion Flag]

这个方向标志控制字符串指令(`MOVS`,CMPS,SCAS,LODS以及`STOS`)。设置DF标志是的串指令自动递减(从高地址向低地址方向处理字符串),清楚该标志则是的串指令自动递增

STD以及CLD指令分别用户设置以及清除DF标志

总结

1. JMP指令:

唯一作用是无条件修改EIP的值,没有对栈和寄存器产生影响。

2. CALL指令:

3.RET

4. CMP指令:该指令是比较两个操作数是否相同

4. TEST指令:

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/136676.html

(0)
上一篇 2025-06-25 19:26
下一篇 2025-06-25 19:45

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信