Учебное пособие по ОЭВМ (775573), страница 3
Текст из файла (страница 3)
| Зн. | Информ. разряды | Описание действий | |
| 0 | 1011 | Множимое | |
| 0 | 1111 | Множитель | |
| 0 | 0000 | СЧП, 4-й разряд мн-ля =0, Сдвиг мн-го на 1р. вправо | |
| +0 | 0000 | СЧП, 3-й разряд мн-ля =1 | |
| 0 | 0101 | 1 | Мн-мое, сдвинутое на 1 разряд вправо |
| +0 | 0101 | 1 | СЧП, 2-й разряд мн-ля =1 |
| 0 | 0010 | 11 | Мн-мое, сдвинутое на 1 разряд вправо |
| +0 | 1000 | 01 | СЧП, 1-й разряд мн-ля =1 |
| 0 | 0001 | 011 | Мн-мое, сдвинутое на 1 разряд вправо |
| +0 | 1000 | 01 | СЧП, 0-й разряд мн-ля =1 |
| 0 | 0000 | 1011 | Мн-мое, сдвинутое на 1 разряд вправо |
| 0 | 1010 | 0101 | Результат операции умножения |
Знак результата формируется операцией сложения по модулю 2 знаков множимого и множителя: Z=00=0. Результат С=0010100101(2)=154(10).
Примем разрядность операндов n, тогда разрядность произведения будет 2n.
Из сравнения структуры АЛУ для каждого рассмотренного метода умножения чисел, представленных в прямом коде, по таблице 2.1 видно, что:
-
если сдвигать множимое (методы 2 и 4), то аппаратные затраты составят:
-
для множимого 2n разрядов;
-
для множителя n разрядов;
-
для произведения 2n разрядов;
-
если сдвигать сумму частичных произведений влево (метод 3), то для произведения аппаратные разряды составят 2n разрядов;
-
если сдвигать сумму частичных произведений вправо (метод 1), то вытесняемые разряды можно записывать в регистр множителя. При использовании этого способа размерность всех регистров может быть n разрядов. Это наиболее экономичный способ организации выполнения операции умножения. Он будет использоваться при моделировании.
Таблица 2.1. Сравнение структуры АЛУ для каждого метода умножения
| Элементы структуры АЛУ | Методы умножения | |||
| 1 | 2 | 3 | 4 | |
| Регистр множителя | Регистр со сдвигом вправо, n-разрядный, после выполнения операции умножения содержит мл. разряды произведения | Регистр со сдвигом вправо, n-разрядный | Регистр со сдвигом влево, n-разрядный | Регистр со сдвигом влево, n-разрядный |
| Регистр множимого | n-разрядный регистр | Регистр со сдвигом влево, 2n-разрядный | n-разрядный регистр | Регистр со сдвигом вправо, 2n-разрядный |
| Сумматор частичных произведений | Регистр со сдвигом вправо, n-разрядный, после выполнения операции умножения содержит ст. разряды произведения | 2n-разрядный регистр, после выполнения операции умножения содержит произведение | Регистр со сдвигом влево, 2n-разрядный, после выполнения операции умножения содержит произведение | 2n-разрядный регистр, после выполнения операции умножения содержит произведение |
Алгоритм умножения двоичных чисел с фиксированной запятой, представленных в дополнительном коде
Рассмотрим алгоритм умножения двоичных чисел с фиксированной запятой, начиная с младших разрядов множителя, со сдвигом суммы частичных произведений и использованием дополнительного кода для отрицательных чисел.
Данный алгоритм умножения заключается в следующем:
-
Сомножители представляются дополнительным кодом. Так как дополнительный код положительного числа совпадает с прямым кодом, то положительные числа будут представлены в прямом коде, а отрицательные – в дополнительном.
-
Исходное значение суммы частичных произведений принимается равным 0.
-
Если анализируемая цифра множителя равна 1, то к сумме частичных произведений прибавляется множимое в том коде, в котором оно представлено. Прибавление производится с выравниванием складываемых чисел по старшим разрядам. Если анализируемая цифра множителя равна 0, прибавление не производится.
-
Сумма частичных произведений сдвигается на один разряд вправо, при этом, если сумма отрицательна, осуществляется модифицированный сдвиг.
-
Пункты 3 и 4 последовательно выполняются для всех цифровых разрядов множителя, начиная с младшего.
-
Если множитель – положительное число, полученный результат представляет собой произведение. Если множитель отрицателен, то для получения произведения к результату прибавляется множимое с обратным знаком. При этом прибавление производится с выравниванием складываемых чисел по старшим разрядам. Если результат размещается в двойном слове, то он предварительно сдвигается на один разряд вправо.
-
Произведение получается в прямом коде, если сомножители имеют одинаковые знаки, и в дополнительном, если сомножители имеют разные знаки.
Алгоритм выполнения операции умножения двоичных чисел
Моделирование функционирования АЛУ при выполнении операции умножения чисел, представленных в прямом коде
При выполнении операции умножения будем сдвигать сумму частичных произведений и анализировать разряды множителя, начиная с младшего разряда.
Операнды в АЛУ записываются в прямом коде. Множимое хранится в регистре R1, множитель в регистре R2. Результат операции умножения будет формироваться в регистрах RC и R2, в RC - старшая часть, в R2 - младшая.
Анализ множителя начинается с младшего разряда, т.е. на каждом шаге анализируется нулевой разряд регистра R2 и после анализа содержимое этого регистра сдвигается вправо на один разряд. Если нулевой разряд регистра R2 равен 1, то к сумме частичных произведений прибавляется множимое, а если в нулевом разряде множителя стоит 0, то к сумме частичных произведений прибавляется 0. Структурная схема АЛУ представлена на рис. 10.
Знак произведения формируется в результате анализа знаков сомножителей. Если сомножители имеют одинаковые знаки, то произведение получается положительным, если знаки различны - произведение будет отрицательным. После определения знака результата знаковые разряды сомножителей обнуляются и умножение производится над положительными числами.
При выполнении операции умножения используется не модифицированный сдвиг, т.е. при сдвиге промежуточного произведения старший разряд заполняется нулем.
Число циклов выполнения операции умножения равно n. Это объясняется тем, что до этапа коррекции (после выполнения (n-1) циклов) требуется сдвиг на 1 разряд вправо в связи с тем, что знаковый разряд обнуляется в начале выполнения операции. Этого можно достичь занося в счетчик циклов n, а не (n-1). Представление результата до и после этапа коррекции показано на рис. 11.
Блок-схема алгоритма операции умножения представлена на рис. 12.
Разрядность регистров АЛУ принимается n бит. Число циклов умножения равно разрядности операндов, т.е. n.
Р
ис. 10. Структурная схема АЛУ для выполнения операции умножения
RС
R3
знак
Результат до этапа коррекции
RС
R3
знак
Результат после этапа коррекции
Рис. 11. Представление результата до и после этапа коррекции
Начало
Ввод операндов
SCH=n
Формирование знака результата:
R1[n]R2[n]
R1[n]=0; R2[n]=0;
RB=0; SCH=n
“0”
“1”
RA:=R1
RA:=0
SM:=RA+RB RC:=П(1)SM R3:=П(1)R2 R3[n-1]:=SM[0..0]
RB:=RC
R2:=R3
Печать содержимого всех регистров АЛУ
SCH:=SCH-1
“<>0”
“=0”
Печать результатов
Рис. 12. Блок-схема алгоритма выполнения операции умножения
Пример выполнения операции умножения
Для наглядности проиллюстрируем выполнение операции умножения на микропрограммном уровне на примере 1.
Пример 1.
Умножим 117 на 45. Введем операнды:
множимое X = 01110101= 117















