Intel 8080:乘法溢出

时间:2015-02-11 05:50:40

标签: assembly overflow multiplication carryflag intel-8080

我有一个8080处理器的模拟器。我需要编写一个程序,它可以通过移位和添加操作多个两个两位数字(因此我可以期待四位数字)

据我所知,intel-8080中的所有数学运算都是在寄存器'A'中进行的,但它只能包含两位数字。如果我多次'ff'和'ff',我会溢出。如何绕过这个问题?谷歌说,对于我的任务,有进位标志,如果发生溢出,将为“1”。

但我无法理解,我怎么能用它。

感谢您的关注。

1 个答案:

答案 0 :(得分:1)

进位标志就像一个额外的位,即MSB(最高有效位)。

Intel 8080/8085 Assembly Programming Manual

  

正如其名称所暗示的那样,进位标志通常用于指示添加是否会导致“进位”。进入下一个更高位的数字。进位标志也用作“借用”标记。减法中的旗帜。

这意味着,如果你有两个数字会增加寄存器:

FF + FF = 1111_1111
        + 1111_1111
        = 1111_1110 + carry = 1

AE + 74 = 1010_1110
        + 0111_0100
        = 0010_0010 + carry = 1

一旦设置,进位标志将保持设置,直到运行另一个不会导致进位的加法。

A0 + 10 = 1010_0000
        + 0001_0000
        = 1011_0000 + carry = 0