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

UptoLike

125
0
1
1
0
коррекция +110
(2)
1
0
1
1
0
результат сдвига
Таким образом, при выполнении сдвига влево операнда в коде
8421 на один двоичный разряд требуется выполнить коррекцию
сдвигаемой тетрады в двух случаях:
1) если значение тетрады после сдвига больше (1001
(2)
=9
(10)
);
2) если при сдвиге перенос из этой тетрады равен 1.
Операция сдвига вправо.
Сдвиг операнда в BCD-коде вправо на один двоичный разряд
уменьшает его значение в два раза. Рассмотрим вначале операцию
сдвига вправо на конкретных примерах.
Пример 1.
Сдвинуть вправо операнд в коде 8421, расположенный в
двух тетрадах и равный 46
(10)
. В результате должно получиться 23
(10)
.
Тетрада
Тетрада
Комментарий
0
0
1
0
0
0
1
1
0
46
8421
0
0
0
1
0
0
0
1
1
AR(46
8421
,1
)
0
0
0
1
0
0
0
1
1
результат сдвига
,
равный 23
8421
Пример 2. Сдвинуть вправо операнд в коде 8421, расположенный в
двух тетрадах и равный 30
(10)
. В результате должно получиться 15
(10)
.
Тетрада
Тетрада
Комментарий
0
0
0
1
1
0
0
0
0
30
8421
0
0
0
0
1
1
0
0
0
AR(
30
8421
,1
)
0
0
0
0
0
1
1
0
1
коррекция [
11
(2)
]=1
101
0
0
0
0
1
0
1
0
1
результат коррекции, перенос
блокируется
0
0
0
0
1
0
1
0
1
результат сдвига
,
равный
15
8421
Таким образом, при выполнении сдвига вправо операнда в ко-
де 8421 требуется выполнить коррекцию тетрады на величину –11
(2)
в том случае, если в нее был перенос, равный 1, из предыдущей тетрады.
4.10.1. Алгоритмы умножения в BCD-коде 8421
Рассмотрим два алгоритма умножения в коде 8421. Первый основан
на алгоритме умножения с младших разрядов множителя и сдвиге час-
                     0 1 1 0 коррекция +110(2)
                 1   0 1 1 0 результат сдвига
   Таким образом, при выполнении сдвига влево операнда в коде
8421 на один двоичный разряд требуется выполнить коррекцию
сдвигаемой тетрады в двух случаях:
   1) если значение тетрады после сдвига больше (1001(2)=9(10));
   2) если при сдвиге перенос из этой тетрады равен 1.
   Операция сдвига вправо.
   Сдвиг операнда в BCD-коде вправо на один двоичный разряд
уменьшает его значение в два раза. Рассмотрим вначале операцию
сдвига вправо на конкретных примерах.
   Пример 1. Сдвинуть вправо операнд в коде 8421, расположенный в
двух тетрадах и равный 46(10). В результате должно получиться 23(10).
 CF      Тетрада      Тетрада                 Комментарий
  0 0 1 0 0 0 1 1 0 468421
  0 0 0 1 0 0 0 1 1 AR(468421,1)
  0 0 0 1 0 0 0 1 1 результат сдвига, равный 238421
   Пример 2. Сдвинуть вправо операнд в коде 8421, расположенный в
двух тетрадах и равный 30(10). В результате должно получиться 15(10).
CF     Тетрада         Тетрада                Комментарий
                                     8421
 0 0 0 1 1 0 0 0 0 30
 0 0 0 0 1 1 0 0 0 AR(308421,1)
 0 0 0 0 0 1 1 0 1 коррекция [–11(2)]=1101
 0 0 0 0 1 0 1 0 1 результат коррекции, перенос
                                   блокируется
 0 0 0 0 1 0 1 0 1 результат сдвига, равный 158421
   Таким образом, при выполнении сдвига вправо операнда в ко-
де 8421 требуется выполнить коррекцию тетрады на величину –11(2)
в том случае, если в нее был перенос, равный 1, из предыдущей тетрады.
         4.10.1. Алгоритмы умножения в BCD-коде 8421
   Рассмотрим два алгоритма умножения в коде 8421. Первый основан
на алгоритме умножения с младших разрядов множителя и сдвиге час-

                                 125