Книга: Цифровые вычислительные устройства и микропроцессоры приборных комплексов
1 0 0 0 0 0 1 0 сдвиг на один разряд влево
1 1 0 1 1-е частичное произведение
1 0 0 0 1 1 1 1 произведение
Рассмотрим выполнение операции умножения с суммированием частичных произведений, начиная с младшего частичного произведения на примере умножения чисел 11012 и 10112 .
1 1 0 1 1-е частичное произведение
0 1 1 0 1 сдвиг на один разряд вправо
1 1 0 1 2-е частичное произведение
1 0 0 1 1 1 сумма 1- и 2-го частичных произведений
1 0 0 1 1 1 сдвиг на один разряд вправо
0 0 0 0 3-е частичное произведение
1 0 0 1 1 1 сумма 1-, 2- и 3-го частичных произведений
1 0 0 1 1 1 сдвиг на один разряд вправо
1 1 0 1 4-е частичное произведение
1 0 0 0 1 1 1 1 сумма частичных произведений
1 0 0 0 1 1 1 1 сдвиг вправо, произведение
При умножении целых чисел для фиксации произведения в разрядной сетке должно предусматриваться число разрядов, равное сумме числа разрядов множимого и множителя.
Пример 1.8 . Умножить однобайтные целые числа без знака. В регистре R1 размещен множитель, в регистре R2 – множимое. Двухбайтный результат умножения будет размещен в аккумуляторе (старший байт) и в R1 (младший байт) вместо множителя. В регистр R3, выполняющий функции счетчика программных циклов, загружается число 8 (число бит множителя). Умножение выполняется младшими битами вперед со сдвигом вправо частичного произведения. Последовательность действий при этом методе умножения следующая:
– Содержимое аккумулятора и регистра-расширителя R1 сдвигается вправо на один бит так, что младший бит множителя, выдвигаемый из регистра R1, помещается в триггер флага C.
– Если C = 1, то множимое добавляется к содержимому аккумулятора, в противном случае никаких операций не производится.
– Декрементируется счетчик циклов R3, и если его содержимое не равно нулю, то все действия повторяются.
– Перед выходом из подпрограммы формируется окончательный результат сдвигом частичного результата на один бит вправо:
MPL: MOV R3,#8 ; загрузка счетчика циклов
CLR A ; очистка аккумулятора
CLR C ; очистка признака переноса
SHIFT: RRC A ; сдвиг аккумулятора вправо
XCH A,R1 ; обмен аккумулятора и R1
RRC A ; сдвиг множителя с занесением
; выдвигаемого бита в C
XCH A,R1 ; обмен аккумулятора и R1