CF与OF的判断 超简单!

| CF(进位/借位标志)

把机器数都当作无符号数看

  • 两数相加,如果最高位有进位,则CF=1,否则为0
  • 两数相减,如果被减数最高位有借位,则CF=1,否则为0

(其实就是小学二年级学的进位借位)

| OF(溢出标志)

把机器数都当作有符号数看

只有当两个相同符号的数相加(含两个不同符号的数相减),而运算结果的符号与原数符号相反时,产生溢出,OF为1。

(根据最高位进位和次高位进位求异或的方法是实际硬件的判断方式,这里不做展开。)

例题:

(2018年408真题) 减法指令“sub R1, R2, R3”的功能为“(R1) - (R2)→R3”,该指令执行后将生成进位/ 借位标志 CF 和溢出标志 OF。若(R1) = FFFF FFFFH,(R2) = FFFF FFF0H,则该减法指令执行后,CF 与 OF 分别为( )。
A. CF = 0, OF = 0
B. CF = 1, OF = 0
C. CF = 0, OF = 1
D. CF = 1, OF = 1

把他们当成无符号数看,显然(R1)大于(R2),所以(R1)-(R2)无借位,CF=0

把他们当成有符号数看,符号相同(都是负数)相减,不可能溢出,OF=0。

CF参考资料
OF参考资料

猜你喜欢

转载自blog.csdn.net/weixin_42378324/article/details/109410402