【问题标题】:Intel 8080: multiplication overflowIntel 8080:乘法溢出
【发布时间】:2015-04-11 09:59:22
【问题描述】:

我有一个 8080 处理器的模拟器。我需要编写一个程序,它可以通过移位和加法操作将两个两位数相乘(结果我可以期望四位数)

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

但我不明白,我该如何使用它。

感谢关注。

【问题讨论】:

    标签: assembly overflow multiplication carryflag intel-8080


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 2014-05-21
      • 2015-08-16
      • 2011-03-11
      • 2015-03-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多