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)
它应该以这种方式工作,尽管通过阅读文档来找出答案很困难:
非整数结果被截断(截断)为 0。
结合“除法”X = dq + r(被除数为除数乘以商加上余数),我们发现因此余数 r = X - d truncate(X / d)
这表明余数取决于被除数的符号,而不取决于除数的符号。