4

Can anyone explain for me why the sign of the remainder is different in these cases? Is this an emulator bug or do real CPUs do this, too?

enter image description here

8 / -3 : quotient(AL) = -2 remainder(AH) =  2
-8 / 3 : quotient(AL) = -2 remainder(AH) = -2
Peter Cordes
  • 328,167
  • 45
  • 605
  • 847

1 Answers1

4

It is supposed to work that way, though it is tricky to find out by reading the documentation:

Non-integral results are truncated (chopped) towards 0.

Combined with the "division law" X = dq + r (the dividend is the divisor times the quotient plus the remainder), we find that therefore the remainder r = X - d truncate(X / d)

This shows that the remainder depends on the sign of the dividend, but not on the sign of the divisor.

harold
  • 61,398
  • 6
  • 86
  • 164