在对两个8位有符号二进制数相乘时,我对如何检测溢出有点绝望?结果也应该是8位。
我使用shift和add指令在微程序中将它们相乘。我的算法在伪代码中用于乘以二进制数a * b,此外我有一个累加器:
if least significant bit of b = 1 {
shift a to the left
add a to the accumulator
shift b to the right
jump to the if statement
} else {
shift b to the right
jump to the if statement
}
当移位时,我用零填充,当b为零时我停止此循环。当我向左移位时,我将最高位移到进位位。
我已经将几个二进制数相乘,看看是否可以在设置溢出时找到一个模式,什么时候不应该,但我无法弄清楚何时应该发生。
我还试图找到IMUL汇编程序指令如何设置其标志但我找不到任何有用的东西。
如果有人知道这是如何工作的,我会非常感谢你的帮助!提前谢谢!