EFLAGS寄存器与JCC指令

本文详细介绍了EFLAGS寄存器中的关键标志位,如进位标志(CF)、奇偶标志(PF)等,以及它们在算术运算和控制流程中的作用。特别提到了JCC指令如何与CMP配合进行条件跳转,如JZ和JE的用法。
摘要由CSDN通过智能技术生成

EFLAGS寄存器

EFLAGS寄存器有32位,EFLAGS 寄存器的标志位可以通过各种指令进行操作和判断,例如条件分支指令、算术指令和控制指令等。程序可以根据标志位的值来进行条件判断和控制流程,从而实现不同的逻辑和功能。

EFLAGS 寄存器的各个位和标志位含义如下:

  • CF (Carry Flag):进/借位标志位。用于表示某些算术操作或移位操作是否产生了进位或借位。

  • PF (Parity Flag):奇偶标志位。用于表示结果中 1 的个数的奇偶性。

  • AF (Auxiliary Carry Flag):辅助进位标志位。用于表示低 4 位的进位或借位情况。

  • ZF (Zero Flag):零标志位。用于表示操作结果是否为零。

  • SF (Sign Flag):符号标志位。用于表示操作结果的最高有效位(符号位)。

  • TF (Trap Flag):陷阱标志位。用于控制单步执行调试功能。

  • IF (Interrupt Flag):中断标志位。用于控制是否允许中断响应。

  • DF (Direction Flag):方向标志位。用于控制字符串传输指令的方向(正向或反向)。

  • OF (Overflow Flag):溢出标志位。用于表示有符号算术操作是否发生溢出。

  • IOPL (I/O Privilege Level):I/O 特权级。用于管理对 I/O 端口的访问权限。

  • NT (Nested Task Flag):嵌套任务标志位。用于表示当前是否处于嵌套任务的执行环境。

  • RF (Resume Flag):恢复标志位。用于控制中断返回时是否进入恢复处理器状态的过程。

  • VM (Virtual Mode Flag):虚拟模式标志位。用于指示处理器是否处于虚拟模式。

  • AC (Alignment Check):对齐检查标志位。用于控制是否进行内存对齐检查。

  • VIF (Virtual Interrupt Flag):虚拟中断标志位。用于指示当前是否处于虚拟 8086 模式的中断响应中。

  • VIP (Virtual Interrupt Pending):虚拟中断等待标志位。用于指示是否有虚拟中断正在等待响应。

  • ID (ID Flag):识别标志位。用于指示是否支持 CPUID 指令。

目前我们只需要关注下面9个就可以了

  1. CF 进位标志:当算术结果产生进位或者借位的时候被置1
  2. PF 奇偶标志:当算术结果为偶数时被置1
  3. AF 辅助进位标志:算术操作在结果的第三位发生进位或借位则将该标志置1
  4. ZF 零标志:当结果为0时被置1
  5. SF 符号标志:当算术结果为负数时被置1
  6. TF 单步标志 :和调试原理相关
  7. IF 中断标志:和内核有关系
  8. DF 方向标志:会影响MOVS STOS两个串操作指令中EDIESI的值
  9. OF 溢出标志:当有符号数的数值超过最大范围时被置1

JCC指令

JCC 指令,一般会跟在 cmp 指令后面,根据标志位决定是否跳转,cmp指令与jcc指令配合使用完成逻辑跳转

经常使用的也就是JZ,JE,其他的用到了再查即可

JZ/JE:如果ZF=0,也就是两个值相等,就跳转

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dao-道法自然

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值