主要用到三个寄存器
CF (carry flag) 进位借位标志寄存器
OF(overflow flag) 溢出标志寄存器
SF(sign flag) 符号标志寄存器
在执行计算操作之后,会影响寄存器的值,符号寄存器会保存最高位符号位的值,计算结果超过一个字节表示会把溢出寄存器置为1(对于8086处理器)
1. 两个无符号数比较
两个无符号数相减,CF是借位标志。如果比较完成后CF=0,表示没有借位,说明被减数(目的操作数)比减数更大。
2. 两个有符号数的比较
有符号数的最高位表示符号,符号标志位SF总是和计算结果的最高位相同。所以当两个正数相比较或者两个负数相比较时,可以用SF来判断被减数比减数大还是比减数小。如果SF为0,则表示被减数比减数大。
如果SF为1,则表示被减数比减数小。
如果一个为正数,另一个为负数,当两者相比较或者相减时,可能会出现计算溢出的情况。也就是说如果两个数异号 比如127 和-50相比较,两者相减结果溢出,虽然应该时正数,但是由于溢出会导致结果是负数结果,此时SF=1,OF=1,两者相同,被减数比减数大。 如果SF=1,OF=0时,两者不同,被减数比减数小。
所以总结来说,如果溢出标志和符号标志不同说明,被减数比减数小,两者相同,被减数比减数大。