如何检测二进制乘法中的溢出?

时间:2018-01-11 21:22:09

标签: binary overflow multiplication flags

在对两个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汇编程序指令如何设置其标志但我找不到任何有用的东西。

如果有人知道这是如何工作的,我会非常感谢你的帮助!提前谢谢!

0 个答案:

没有答案