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

use*_*354 5 assembly integer-division x86-16 emu8086

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

在此输入图像描述

8 / -3 : quotient(AL) = -2 remainder(AH) =  2
-8 / 3 : quotient(AL) = -2 remainder(AH) = -2
Run Code Online (Sandbox Code Playgroud)

har*_*old 5

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

非整数结果被截断(截断)为 0。

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

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