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