cmpq Src1, Src2
计算Src2 - Src1 但不改变目的操作数,仅用 结果设置条件码
条件码的设置:
CF=1 如果最高有效位有进位(无符号数比较)
ZF = 1 如果Src2-Src1 == 0,即两者相等,将标志位设置为1
OF = 1 对于有符号数溢出的处理
(a>0 && b<0 && (a-b)<0)||(a<0 && b>0 && (a-b) >0)
SF = 1 即是(a-b)<0 将标志符设置为1
布尔指令 test
TEST指令:执行隐含的“与”操作,并相应设置 标志位(ZF,SF)。
TEST指令不修改目的操作数;
指令格式和AND指令相同;
测试操作数某位或某几位是否被设置时特别有用! 还被应用于验证操作数的符号。
当所有测试位都为0时,ZF=1
条件跳转:
无符号数: a,b,n,e
a 大于 b 小于 n 非 e 等于
▪ JA/JNA(>/<=) 大于
JAE/JNAE(>=/<)
JB/JNB(<|>=)
▪ JBE/JNBE(<=|>)
有符号数的比较
g 大于 ,l 小于 ,n非 ,e 等于