Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МУ_КП_1801.doc
Скачиваний:
15
Добавлен:
27.08.2019
Размер:
2.81 Mб
Скачать

6. Многословное умножение

В процессе выполнения курсовой работы появляется необходимость умножать операнды с разрядностью, более 1 слова.

Это возможно реализовать, например суммированием одного из множителей столько раз, сколько задается вторым множителем.

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

Рассмотрим пример. Умножим два слова на одно.

Еще один пример. Умножение двух двухсловных множителей.

Схематично обозначено: W – слова, составляющие множители, Р – произведения промежуточные, С – переносы, S – итоговое произведение.

Выходом команды MUL является 32- (или 16- (для нечетных регистров) разрядное слово, которое записывается в регистры, указываемые в команде. Следовательно трактовать схемы можно следующим образом:

C10 P10 = W10 * W20 произведение младших слов (W#0) умножаемых слов (W1, W2) содержиться в C10 – старшая часть произведения, P10 – младшая часть произведения.

Аналогично для С2.

С3# – переносы от арифметического суммирования промежуточных произведений.

Код программы, реализующий умножение по данному алгоритму достаточно прост.

Допустим: 400, 402 - 1е слово; 404, 406 - 2е слово; 410, 412, 414, 416 – произведение.

Адрес

Метка

Мнемокод

Комментарий

1000

MOV 400, R0

Умножаем младшее слово 2-го множителя

MOV 402, R2

на 1-й множитель

MUL 404, R0

MUL 404, R2

MOV R1, 410

R1 - младшее слово произведения

ADD R0, R3

Получение 1-го произведения

ADC R2

MOV R3, 412

Сохранение 1-го произведения в память

MOV R2, 414

MOV 400, R0

Умножаем старшее слово 2-го множителя

MOV 402, R2

на 1-й множитель

MUL 406, R0

MUL 406, R2

ADD R0, R3

Получение 2-го произведения

ADC R2

ADD R1, 412

Получение итогового произведения

ADC 414

ADC 416

ADD R3, 414

ADC 416

ADD R2, 416

MOV 416, R0

Декоративная надстройка для

MOV 414, R1

эмулятора Ersatz-11

MOV 412, R2

MOV 410, R3

HALT

Остановиться

Авторы надеятся, что увеличение или уменьшение разрядности множителей на основе предложенных алгоритма и кода не составит для студентов особого труда.