这一小节我们讲一下标志位的生成,对上一小节的加法器做个补充
标志位的生成
OF(Overflow Flag)
含义:有符号的加减运算1是否发生了溢出。OF=1时,说明发生了溢出,我们上一小节说过,判断是否溢出,就看它最高位的进位和次高位产生的进位是否相同,不同则溢出。
计算方法:OF=最高位产生的进位次高位产生的进位
例如:x=-8,y=7,[x]补=1000,[y]补=0111,x-y=1000+(1000+1)=10001=1D
最高位进位=1,次高位进位=0,所以OF=1,表示溢出了
注意:OF对无符号的加减法无意义
SF(Sign Flag)
SF比较简单,就是判断运算结果的正负性,SF=0表示为正数,SF=1表示为负数
计算方法:SF=最高位的本位和
注意:SF位对无符号的加减法无意义
ZF(Zero Flag)
ZF也比较简单,如果运算结果为0,ZF=1,否则为0
ZF对有符号数还是无符号数都是有意义的
CF(Carry Flag)
含义:表示无符号加减法是否发生了进位或借位。当CF=1时,说明无符号数的加减运算发生了进位或借位,也即发生了溢出
计算方法:CF=最高位产生的进位sub(sub=1表示减法,sub=0表示加法)
大家还记得sub是什么吗?
sub就是加/减法控制信号,如果是加法sub=0,减法sub=1
注意:CF位对有符号数的加减法无意义