8086标志寄存器,加减乘法运算

1、OF的具体含义是什么?能否解释清楚一点?我知道是超出有符号数的表示范围就叫溢出,OF就置1了,可是,cpu是怎么知道已经溢出了?举例:88H+88H=10H 10001000+10001000=(1)00010000 按照无符号运算很好解释 但是要按照有符号数解释呢? 假设以上二进制运算是补码,则为-78H+(-78H)=-F0H 结果显然不对,我们可以解释说是溢出了(80H--7FH),所以结果不对,可是,cpu是怎么知道已经溢出了,因为,无论我们是按原码,反码,还是补码解释,还是有符号数无符号数,都是我们自己定义的,cpu知道的只是:10001000+10001000=00010000那么,它是根据什么,怎么判断出已经溢出了???2、乘法除法在8086中是怎样实现的?(实在想不通)
2026年09月27日 15:09
有1个网友回答
网友(1):

(1)8086的ALU与标志寄存器之间有逻辑电路,用来产生ALU操作后的状态字。其中溢出也是状态字的一位OF位,溢出逻辑表达式为OF=Cf⊕Co,其中Cf为符号位产生的进位,Co为最高有效位产生的进位。此逻辑表达式可用异或门实现直接打入标志寄存器的OF位。
(2)乘法本身就是通过移位相加实现的,8086没有专门的阵列乘法单元,其乘法是被乘数在乘数各位的控制下通过移位相加法实现的,具体在8086的ALU里面有一个移位寄存器进行移位操作。对于除法,8086也没有阵列除法器,除法是乘法的逆运算,8086的除法是通过乘法实现的。