Основы арифметики цифровых процессоров. Вашкевич Н.П - 71 стр.

UptoLike

70
4.5.4. Алгоритм умножения двоичных дробных чисел
в формате с ФТ
Алгоритм умножения двоичных дробных чисел в формате с ФТ
имеет следующие отличия по отношению к раннее рассмотренным.
Нельзя избавиться от знакового бита множителя, после достижения
счетчиком тактов значения, равного 0, выполнив дополнительный
«n сдвиг» (произведение было бы уменьшено в два раза). Нужно об-
нулить младший бит регистра Р2, например, выполнив операцию по-
разрядной конъюнкции с маской, содержащей 1 во всех битах, кроме
младшего. Рассмотрим пример выполнения такого алгоритма.
Выполнить операцию умножения операндов X и Y на восьмираз-
рядном процессоре в прямом коде (табл. 4.5). Обратите внимание,
что при рассмотрении примера двойной рамкой выделяется значение
младшего бита Р2, который анализируется на шаге 4.
X=0,24
(8)
, Y= – 0,65
(8)
;
Z=X*Y;
X=0,24
(8)
=0,0101000
(2)
; [X]
1
=00101000;
Y= – 0,65
(8)
= – 0,1101010
(2)
; [Y]
1
=11101010;
Р1=[|X|]
1
=00101000;
Р2=[|Y|]
1
=01101010.
В этой таблице через ARC обозначается комбинация арифметиче-
ского и логического сдвигов. В этом случае выдвигаемый разряд за-
писывается во флаг CF. Если при сложении возникает переполнение,
то это учитывается при арифметическом сдвиге (значение CF запи-
сывается в знаковый бит, а значение знакового битав старший чис-
ловой разряд). После поразрядной конъюнкции Р2 с маской
11111110
(2)
в регистрах РСМ и Р2 содержится произведение: в РСМ
старшая часть, а в Р2 – младшая часть. Выполним проверку:
[X*Y]
1
=[1010000100100000]
1
= – 0,01000010010000
(2)
= – 0,20440
(8)
.
0,
6
5
x
0,
2
4
3
2
4
1
5
2
0,
2
0
4
4
Результат верен.
      4.5.4. Алгоритм умножения двоичных дробных чисел
                            в формате с ФТ
   Алгоритм умножения двоичных дробных чисел в формате с ФТ
имеет следующие отличия по отношению к раннее рассмотренным.
Нельзя избавиться от знакового бита множителя, после достижения
счетчиком тактов значения, равного 0, выполнив дополнительный
«n сдвиг» (произведение было бы уменьшено в два раза). Нужно об-
нулить младший бит регистра Р2, например, выполнив операцию по-
разрядной конъюнкции с маской, содержащей 1 во всех битах, кроме
младшего. Рассмотрим пример выполнения такого алгоритма.
   Выполнить операцию умножения операндов X и Y на восьмираз-
рядном процессоре в прямом коде (табл. 4.5). Обратите внимание,
что при рассмотрении примера двойной рамкой выделяется значение
младшего бита Р2, который анализируется на шаге 4.
   X=0,24(8), Y= – 0,65(8);
   Z=X*Y;
   X=0,24(8)=0,0101000(2); [X]1=00101000;
   Y= – 0,65(8)= – 0,1101010(2); [Y]1=11101010;
   Р1=[|X|]1=00101000;
   Р2=[|Y|]1=01101010.
   В этой таблице через ARC обозначается комбинация арифметиче-
ского и логического сдвигов. В этом случае выдвигаемый разряд за-
писывается во флаг CF. Если при сложении возникает переполнение,
то это учитывается при арифметическом сдвиге (значение CF запи-
сывается в знаковый бит, а значение знакового бита – в старший чис-
ловой разряд). После поразрядной конъюнкции Р2 с маской
11111110(2) в регистрах РСМ и Р2 содержится произведение: в РСМ
старшая часть, а в Р2 – младшая часть. Выполним проверку:
   [X*Y]1=[1010000100100000]1= – 0,01000010010000(2)= – 0,20440(8).
                0, 6 5
          x 0, 2 4
      — — — — —
                3 2 4
          1 5 2
      — — — — —
      0, 2 0 4 4
   Результат верен.

                                70