当前位置: 首页 > article >正文

汇编JCC条件跳转指令记忆

汇编中的条件跳转指令(JCC):


1. 理解标志寄存器

JCC 指令依赖于标志寄存器(FLAGS)的状态,常见的标志位有:

  • ZF(Zero Flag):结果为0时置1。

  • CF(Carry Flag):无符号数溢出时置1。

  • SF(Sign Flag):结果为负时置1。

  • OF(Overflow Flag):有符号数溢出时置1。

  • PF(Parity Flag):结果中1的个数为偶数时置1。

理解这些标志位的含义是记忆 JCC 的基础。


2. 分类记忆

将 JCC 指令分为几类,每类对应一种比较场景:

(1) 无符号数比较
  • JA/JNBE:高于/不低于等于时跳转(A = Above)。

  • JAE/JNB:高于等于/不低于时跳转(AE = Above or Equal)。

  • JB/JNAE:低于/不高于等于时跳转(B = Below)。

  • JBE/JNA:低于等于/不高于时跳转(BE = Below or Equal)。

记忆技巧

  • A 表示“高于”,B 表示“低于”。

  • E 表示“等于”(Equal)。

  • N 表示“不”(Not)。


(2) 有符号数比较
  • JG/JNLE:大于/不小于等于时跳转(G = Greater)。

  • JGE/JNL:大于等于/不小于时跳转(GE = Greater or Equal)。

  • JL/JNGE:小于/不大于等于时跳转(L = Less)。

  • JLE/JNG:小于等于/不大于时跳转(LE = Less or Equal)。

记忆技巧

  • G 表示“大于”,L 表示“小于”。

  • E 表示“等于”。

  • N 表示“不”。


(3) 零值判断
  • JE/JZ:等于/为零时跳转(E = Equal,Z = Zero)。

  • JNE/JNZ:不等于/不为零时跳转(NE = Not Equal,NZ = Not Zero)。

记忆技巧

  • E 和 Z 都表示“等于”或“为零”。

  • NE 和 NZ 表示“不等于”或“不为零”。


(4) 标志位判断
  • JC:进位标志为1时跳转(C = Carry)。

  • JNC:进位标志为0时跳转(NC = Not Carry)。

  • JO:溢出标志为1时跳转(O = Overflow)。

  • JNO:溢出标志为0时跳转(NO = Not Overflow)。

  • JS:符号标志为1时跳转(S = Sign)。

  • JNS:符号标志为0时跳转(NS = Not Sign)。

  • JP/JPE:奇偶标志为1时跳转(P = Parity,PE = Parity Even)。

  • JNP/JPO:奇偶标志为0时跳转(NP = Not Parity,PO = Parity Odd)。

记忆技巧

  • 标志位的缩写直接对应指令名称(如 C = Carry,O = Overflow)。

  • N 表示“不”。


3. 总结规律

  • 字母含义

    • A/B:无符号数比较(Above/Below)。

    • G/L:有符号数比较(Greater/Less)。

    • E:等于(Equal)。

    • Z:为零(Zero)。

    • C:进位(Carry)。

    • O:溢出(Overflow)。

    • S:符号(Sign)。

    • P:奇偶(Parity)。

  • 前缀

    • J:跳转(Jump)。

    • N:不(Not)。


4. 练习与应用

  • 编写简单的汇编代码,使用不同的 JCC 指令,观察其行为。

  • 通过调试器(如 GDB)查看标志寄存器的变化,加深理解。


5. 记忆口诀

  • 无符号A(Above)高,B(Below)低,E 等于别忘记。

  • 有符号G(Greater)大,L(Less)小,E 等于要记牢。

  • 零值E 等于 Z 为零,NE 不等 NZ 非零。

  • 标志位C 进位 O 溢出,S 符号 P 奇偶。


http://www.kler.cn/a/534828.html

相关文章:

  • k8s常见面试题2
  • VLL CCC远程连接实验
  • TensorFlow是个啥玩意?
  • 使用Pygame制作“贪吃蛇”游戏
  • 一文讲解Spring如何解决循环依赖
  • C#结合html2canvas生成切割图片并导出到PDF
  • langchain教程-11.RAG管道/多轮对话RAG
  • DeepSeek让 Obsidian 更强大:Text generator与 Copilot 使用指南
  • 【LeetCode: 1004. 最大连续1的个数 III + 滑动窗口】
  • ?和.和*在正则表达式里面的区别
  • 探索进制转换的奥秘/西瓜杯
  • fast-lio代码解析(二)
  • PE/西瓜杯
  • Linux 环境安装 Elasticsearch 8
  • 每日一题——最小的K个数
  • 【蓝桥杯嵌入式】4_key:单击+长按+双击
  • 排序时间的复杂度和稳定性
  • 汽车免拆诊断案例 | 2015款奔驰R320车行驶中偶尔多个故障灯异常点亮
  • 游戏引擎学习第88天
  • DeepSeek背景下的知识库搭建指南
  • 蓝桥杯备考:差分算法模板题(差分算法详解)
  • DockerFile详细学习
  • C++基础系列【4】C++数据类型
  • 基于 .NET 8.0 gRPC通讯架构设计讲解,客户端+服务端
  • SAM 大模型杂谈
  • DeepSeek:基于大模型的任务管理系统