Алгоритмы умножения № 1

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

 

1. Данный алгоритм характеризуется тем, что для множимого, множителя и частичной суммы используются регистры одной величины. Результат (произведение) при этом хранится в паре, соответствующей частичной сумме и множителя, которое постепенно заполняется нулями, при чем старшая часть хранится в регистре частичной суммы, а младшая - в регистре множителя.

Пусть А – множимое, В – множитель, D – частичная сумма.

               
   
 
   
 
 
   

 


 

       
 
 
   

 

 


Пример:

Пусть A = 610 = 01102 (множимое); B = 310 = 00112 (множитель);

D = 00002 (частичная сумма)

 

№ такта Действие Флаг [C]
   
Сдвиг В вправо B = [0]001|1
[C] = 1, след. прибавляем множимое к частичной сумме D = D + A
Сдвиг D вправо D = [0]011|0
Сдвиг В вправо B = [0]000|1
[C] = 1, след. прибавляем множимое к частичной сумме D = D + A
Сдвиг D вправо D = [0]100|1
Сдвиг В вправо B = [1]000|0
Сдвиг D вправо D = [0]010|0
Сдвиг В вправо B = [0]100|0
Сдвиг D вправо D = [0]001|0
Сдвиг В вправо B = [0]010|0
Сдвиг D вправо D = [0]000|1
Сдвиг D влево D = 0|000[1]

 

 

Результат в D:B : 0001 : 0010. Нетрудно видеть, что 000100102 = 1810.