Intel 8080: умножение переполнения

У меня эмулятор процессора 8080. Мне нужно написать программу, которая может умножить два двузначных числа с операциями сдвига и сложения (в результате я могу ожидать четырехзначное число)

Как я знаю, все математические операции в intel-8080 выполняются в регистре "А", но он может содержать только двузначные числа. Если я умножу 'ff' и 'ff', я получу переполнение. Как обойти эту проблему? Google сказал, что для моей задачи есть флаг переноса, который будет равен 1, если произойдет переполнение.

Но я не могу понять, как я могу это использовать.

Спасибо за внимание.

1 ответ

Решение

Флаг переноса похож на дополнительный бит, который является старшим битом (MSB).

Intel 8080/8085 Руководство по программированию сборки.

Как следует из названия, флаг переноса обычно используется для указания того, вызывает ли сложение перенос в следующую цифру более высокого порядка. Флаг переноса также используется как флаг заимствования в вычитаниях.

Это означает, что если у вас есть добавление двух чисел, которые переполняют регистр:

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
Другие вопросы по тегам