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

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

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

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

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


person dark    schedule 11.02.2015    source источник


Ответы (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
person Matt Clark    schedule 11.02.2015