X86 IDIV余数的符号取决于8 / -3和-8/3的分红符号?

时间:2018-12-29 03:37:42

标签: assembly x86-16 integer-division emu8086

谁能为我解释为什么在这些情况下其余符号不同?这是模拟器错误还是真正的CPU也这样做?

enter image description here

8 / -3 : quotient(AL) = -2 remainder(AH) =  2
-8 / 3 : quotient(AL) = -2 remainder(AH) = -2

1 个答案:

答案 0 :(得分:3)

应该可以用这种方式工作,尽管通过阅读文档来找出它很困难:

  

非整数结果将被截断(切成零),向0。

结合“除法” X = dq + r(被除数是除数乘以商加余数),我们发现余数r = X-d truncate(X / d)

这表明余数取决于除数的符号,而不取决于除数的符号。