Рефераты. Выполнение арифметических операций в АЛУ

 

000010

 

000010

 

 

000000

 

 

 

000010

 

 

 

 

 

В блоке 7 (см. табл. 3.1), на выходную шину ШиВых вначале выдается старшая часть результата умножения, а затем – младшая часть.

старшая часть

младшая часть

 

Веса

разрядов

210

29

28

27

26

25

24

23

22

21

20

 

0

0

0

0

1

0

0

0

0

0

1

0

 


знак

Модуль произведения

Рис. 3.8. Число Z=X×Y=+130 с фиксированной

запятой в формате двойной длины

Результат умножения чисел в формате двойной длины представлен на рис. 3.8.










3.3. АЛУ для деления чисел

с фиксированной запятой

В ЭВМ операция деления чисел с фиксированной запятой с помощью соответствующих алгоритмов сводится к операциям вычитания (иногда также сложения) и сдвига.

Реализовать деление можно двумя основными способами:

-                  деление с неподвижным делимым и сдвигаемым вправо делителем. Этот способ деления основан на прямом копировании действий при ручном делении. Недостатком такого способа является двойная длина сумматора и его регистров в АЛУ. Данный способ не нашёл широкого распространения и поэтому рассматриваться не будет;

-                  деление с неподвижным делителем и сдвигаемым влево делимым. Этот способ позволяет строить АЛУ с сумматором одинарной длины (см. рис. 3.9). Здесь неподвижный делитель (Y) хранится в Рг1, а делимое (X), сдвигаемое влево относительно делителя, находится в двух регистрах: старшие разряды делимого – в Рг3, а младшие – в Рг2. Арифметико-логические устройства рассмотренного типа широко используются для деления.

Данный способ имеет две разновидности:

-                алгоритм деления с неподвижным делителем с восстановлением остатка;

-                алгоритм деления с неподвижным делителем без восстановления остатка.

Алгоритм деления с неподвижным делителем с восстановлением остатка можно разделить на следующие этапы:

1.    Берутся модули от делимого и делителя (то есть знаковые разряды делимого и делителя обнуляются). Необходимо отметить, что, как в алгоритме деления с восстановлением остатка, так и в алгоритме деления без восстановления остатка, знак частного фиксируется равным нулю (т.е. знак частного - положительный). Для первого алгоритма это происходит в блоке 9 (см. рис. 3.10). Для второго алгоритма это происходит в блоке 17 (см. рис. 3.11) при первом проходе цикла получения разрядов частного. В счётчик циклов СчЦ устанавливается значение разрядности регистров;

2.        Исходное значение частичного остатка полагается равным старшим разрядам делимого. В данном алгоритме делимое имеет двойную длину, так как младшая и старшая часть делимого содержится в разных регистрах (см. рис. 3.9). Чтобы делимое, как и делитель, имело одинарную длину, в данном случае можно условно принять, что делимое имеет двойную длину с нулями в разрядах старшей половины делимого. Для этого все разряды Рг3 обнуляются, в разряды Рг2 заносятся разряды делимого. Поэтому исходное значение частичного остатка равно нулю;

3.    Частичный остаток удваивается путём сдвига на 1 разряд влево. При этом в освобождающийся при сдвиге младший разряд частичного остатка заносится очередная цифра делимого из разрядов младшей половины делимого (из нулевого разряда Рг2[0]);

4.    Из сдвинутого частичного остатка вычитается делитель и анализируется знак результата вычитания;

5.    Если результат вычитания положителен (См[0] = 0), то очередная цифра модуля частного равна 1 (Рг2’[n-1]:=1). Если же результат вычитания отрицателен (См[0] = 1), то очередная цифра модуля частного равна 0 (Рг2’[n-1]:=0).

В последнем случае остаток восстанавливается таким, каким он был до вычитания (восстановление из РгB);

6.    Этапы 3, 4 и 5 последовательно выполняются для получения всех цифр модуля частного;

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

Микропрограмма деления чисел с восстановлением остатка для случая положительных чисел приведена на рис 3.10.

 




























Поясним процесс восстановления остатка. Если вычитание даёт отрицательный результат (См[0] = 1), то предыдущий частичный остаток, хранящийся в РгB, передаётся в РгСм, для чего предварительно обнуляется РгA. В РгСм приём осуществляется со сдвигом влево на 1 разряд. Это обеспечивает восстановление прежнего остатка и смещение его относительно делителя перед очередным вычитанием.

Рассмотренный метод носит название деление с восстановлением остатка. Недостатком этого метода является необходимость дополнительного времени на восстановление остатка.

Деление с восстановлением остатка всегда требует для получения одной цифры частного сдвиг частичного остатка, вычитание делителя, а иногда и восстановление остатка.

Обычно в ЭВМ для деления используется другой метод – деление без восстановления остатка.

 

Алгоритм деления с неподвижным делителем без восстановления остатка можно разделить на следующие этапы:

1. – 3. Этапы 1, 2 и 3 совпадают с соответствующими этапами предыдущего алгоритма;

  1. Если остаток положителен (См[0] = 0), то из сдвинутого частичного остатка вычитается делитель;

Если же остаток отрицателен (См[0] = 1), то к сдвинутому частичному остатку прибавляется делитель;

  1. Если результат вычитания положителен (См[0] = 0), то очередная цифра модуля частного равна 1 (Рг2’[n-1]:=1). Если же результат вычитания отрицателен (См[0] = 1), то очередная цифра модуля частного равна 0
    (Рг2’[n-1]:=0);
  2. Этапы 3, 4 и 5 последовательно выполняются для получения всех цифр модуля частного;
  3. Знак частного положителен, если знаки делимого и делителя одинаковы, в противном случае – отрицательный.

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

























































Рис. 3.11. Микропрограмма деления целых чисел с

фиксированной запятой без восстановления остатка


Из микропрограммы видно, что, пока не определены все цифры частного (СчЦ ¹ 0), в зависимости от знака частичного остатка либо подсуммируется делитель (при См[0] = 1), либо вычитается делитель (при См[0] = 0). У полученного нового частичного остатка анализируется знак и по нему определяется цифра частного. По завершении всех циклов деления (СчЦ = 0) выдаётся результат. При этом, если остаток отрицателен (См[0] = 1), то он восстанавливается путём подсуммирования делителя (см блок 13 на
рис. 3.11).

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

Деление без восстановления остатка всегда требует для получения одной цифры частного сдвига частичного остатка, а также сложения или вычитания делителя.


Пример1: Пусть X = +23, Y = +5. Вычислить Z = X / Y, где X, Y и Z – числа с фиксированной запятой. При делении использовать алгоритм деления чисел с фиксированной запятой с восстановлением остатка.

В данном примере для представления чисел с фиксированной запятой выделим 6 разрядов, причём старший разряд – знаковый. Делимое X показано на рис. 3.12.а, делитель Y показан на рис. 3.12.б.

Страницы: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16



2012 © Все права защищены
При использовании материалов активная ссылка на источник обязательна.