问题:CPU是如何检测溢出的?
在加法和减法运算完成后,CPU使用一种非常有趣的方法确定溢出标志的值:运算结果最高有效位的进位值(即CF的值)与到最高有效位的进位值异或,其结果放到溢出标志中。例如8位二进制数 1000 0000 和 1111 1110 相加,第6位向最高有效位(第7位)无进位,但是第7位向高位有进位值(CF=1):
第6位到第7位没有进位
CF = 1 ← 1000 0000
+ 1111 1110
---------------------------------
= 0111 1110
由于1 XOR 0 = 1,因此:OF = 1
注:《Intel汇编语言程序设计》第五版