汇编跳转指令使用总结

一、状态寄存器

PSW(Program Flag)程序状态字寄存器,是一个16位寄存器,由条件码标志(flag)和控制标志构成,如下所示:

条件码:
①OF(Overflow Flag)溢出标志。溢出时为1,否则置0。
②SF(Sign Flag)符号标志。结果为负时置1,否则置0.
③ZF(Zero Flag)零标志,运算结果为0时ZF位置1,否则置0.
④CF(Carry Flag)进位标志,进位时置1,否则置0.
⑤AF(Auxiliary carry Flag)辅助进位标志,记录运算时第3位(半个字节)产生的进位置。有进位时1,否则置0.
⑥PF(Parity Flag)奇偶标志。结果操作数中1的个数为偶数时置1,否则置0.

控制标志位:
⑦DF(Direction Flag)方向标志,在串处理指令中控制信息的方向。
⑧IF(Interrupt Flag)中断标志。
⑨TF(Trap Flag)陷井标志。

二、比较指令

test  逻辑与运算结果为零,就把ZF(零标志)置1;
cmp 算术减法运算结果为零,就把ZF(零标志)置1.

三、JCC(Jump if Condition is met)跳转指令

JCC实际上是一类指令的通用名称,其中 "CC" 是 "Condition Code" 的缩写

3.1、跳转指令

指 令

描 述

条 件

别 名

相 反 指 令

JC

如果进位位被置位则跳转

进位标志=1

JB,JNAE

JNC

JNC

如果进位位没有置位则跳转

进位标志=0

JNB,JAE

JC

JZ

如果0标志被置位则跳转

0标志=1

JE

JNZ

JNZ

如果0标志没有置位则跳转

0标志=0

JNE

JZ

指 令

描 述

条 件

别 名

相反指令

JS

如果符号位被置位则跳转

符号标志=1

JNS

JNS

如果符号位没有被置位则跳转

符号标志=0

JS

JO

如果溢出标志置位则跳转

溢出标志=1

JNO

JNO

如果溢出标志没有置位则跳转

溢出标志=0

JO

JP

如果奇偶校验位被置位则跳转

奇偶校验标志=1

JPE

JNP

JPE

如果奇偶校验位为偶校验则跳转

奇偶校验标志=1

JP

JPO

JNP

如果奇偶校验位没有被置位则跳转

奇偶校验标志=0

JPO

JP

JPO

如果奇偶校验位为奇校验则跳转

奇偶校验标志=0

JNP

JPE

3.2、使用无符号数比较的JCC指令

指 令

描 述

条 件

别 名

相反指令

JA

如果超过(>)则跳转

进位标志=0,0标志=0

JNBE

JNA

JNBE

如果不低于或等于(不 <=)则跳转

进位标志=0,0标志=0

JA

JBE

JAE

如果超过或等于(>=)则跳转

进位标志=0

JNC,JNB

JNAE

JNB

如果不低于则跳转(不 <)

进位标志=0

JNC,JAE

JB

JB

如果低于(<)则跳转

进位标志=1

JC,JNAE

JNB

JNAE

如果不超过或等于(不>=)则跳转

进位标志=1

JC,JB

JAE

JBE

如果低于或等于(<=)则跳转

进位标志=1或0标志=1

JNA

JNBE

JNA

如果不超过(不>)则跳转

进位标志=1或0标志=1

JBE

JA

JE

如果相等(=)则跳转

0标志=1

JZ

JNE

JNE

如果不相等(<>)则跳转

0标志=0

JNZ

JE

3.3、使用有符号数比较的JCC指令

指 令

描 述

条 件

别 名

相反指令

JG

如果大于(>)则跳转

符号标志=溢出标志或0标志=0

JNLE

JNG

JNLE

如果小于或等于(<=)则跳转

符号标志=溢出标志或0标志=0

JG

JLE

JGE

如果大于或等于(>=)则跳转

符号标志=溢出标志

JNL

JGE

JNL

如果不小于(不<)则跳转

符号标志=溢出标志

JGE

JL

JL

如果小于(<)则跳转

符号标志<>溢出标志

JNGE

JNL

JNGE

如果大于或等于(>=)跳转

符号标志<>溢出标志

JL

JGE

JLE

如果小于或等于(<=)跳转

符号标志<>溢出标志或0标志=1

JNG

JNLE

JNG

如果不大于(不>)则跳转

符号标志<>溢出标志或0标志=1

JLE

JG

JE

如果等于(=)则跳转

0标志=1

JZ

JNE

JNE

如果不等于(<>)则跳转

0标志=0

JNZ

JE

以上就是本文的全部内容

  • 19
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值