汇编-cmp比较指令和条件转移指令

 

cmp指令格式:cmp操作对象1,操作对象2

功能:计算操作对象1-操作对象2,但并不保存结果,仅仅根据计算结果对标志寄存器进行设置。

 

 

我们通过cmp指令执行后, 相关标志位的值就可以看出比较的结果。

cmp ax,bx

 

根据单个标志位的状态判断转移的指令

指令
转移条件
说明
JC DEST
CF=1
有进位/借位
JNC DEST
CF=0
无进位/借位
JE/JZ DEST
ZF=1
相等/等于零
JNE/JNZ DEST
ZF=0
不相等/不等于零
JS DEST
SF=1
是负数
JNS DEST
SF=0
是正数
JO DEST
OF=1
有溢出
JNO DEST
OF=0
无溢出
JP/JPE DEST
PF=1
有偶数个“1”
JNP/JPO DEST
PF=0
有奇数个“1”

 

 

无符号数比较结果进行转移的条件转移指令:

指令               含义                                          检测的相关标志位

je                   等于则转移  =                             zf=1   

jne                不等于则转移 ≠                            zf=0

jb                  低于则转移     <                           cf=1 

jnb                不低于则转移  ≥                          cf=0

ja                  高于则转移     >                          cf=0且zf=0

jna               不高于则转移    ≤                         cf=1或zf=1

 

根据两个有符号数的比较结果判断转移的指令 

指令
转移条件
含义
英文表述
JG/JNLE DEST
SF=OF AND ZF=0
有符号数A>B
JMP greater (not less or equal)
JGE/JNL DEST
SF=OF OR ZF=1
有符号数A≥B
JMP greater or equal (not less)
JL/JNGE DEST
SF≠OF AND ZF=0
有符号数A<B
JMP less (not greater or equal)
JLE/JNG DEST
SF≠OF OR ZF=1
有符号数A≤B
JMP less or equal (not greater)

 

 

 

 

 

 

 

 

 

posted @   天子骄龙  阅读(631)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 别再用vector<bool>了!Google高级工程师:这可能是STL最大的设计失误
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
历史上的今天:
2020-08-18 C++ static静态成员函数
2020-08-18 C++static静态成员变量
点击右上角即可分享
微信分享提示

目录导航