Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
KOMAROV.DOC
Скачиваний:
0
Добавлен:
01.04.2025
Размер:
1.32 Mб
Скачать

Значения выходного кода сдвигателя при различных значениях

уп­рав­ляющего кода и сигнала HI/LO

Управляющий код

Выходной код сдвигателя

Активен HI

Активен LO

16…127

32…127

00000000 00000000 00000000 00000000

15

31

R0000000 00000000 00000000 00000000

14

30

PR000000 00000000 00000000 00000000

2

18

CDEFGHIJ KLMNPR00 00000000 00000000

1

17

BCDEFGHI JKLMNPR0 00000000 00000000

0

16

ABCDEFGH IJKLMNPR 00000000 00000000

-1

15

XABCDEFGH IJKLMNP R0000000 00000000

-2

14

XXABCDEFGH IJKLMN PR000000 00000000

-30

-14

XXXXXXXX XXXXXXXX XXXXXXXX

XXXXXXAB

-31

-15

XXXXXXXX XXXXXXXX XXXXXXXX

XXXXXXXA

-32…-128

-16…-128

XXXXXXXX XXXXXXXX XXXXXXXX

XXXXXXXX

Примечания к табл. 1.3:

  • ABCDEFGHIJKLMNPR – входной код (совокупность нулей и единиц) сдвигателя;

  • Х – бит распространения.

Табл. 1.3 показывает, что сдвигатель заполняет все биты выходного кода, которые находятся справа от входного кода нулями, а слева – битом распространения Х (см. вход Х сдвигателя на рис. 1.8). В зависимости от выполняемой команды (см. п. 1.17.7) есть три источника бита распространения: старший значащий (знаковый) разряд входного кода, бит АС регистра арифметического статуса ASTAT (см. п. 1.10) и нуль.

Блок OR/PASS в зависимости от команды (см. п. 1.17.7) либо пропускает выходной код сдвигателя для запоминания в регистре SR (когда опущена опционная часть команд сдвига [SR OR]), либо выполняет операцию логического сложения над выходным кодом сдвигателя и содержимым регистра SR (когда опционная часть команд сдвига [SR OR] присутствует).

Опционная часть команд сдвига [SR OR] используется для выполнения сдвигов чисел с двойной точностью (32-битных). Допустим, что регистр SE содержит код 3, а регистр SI - ABCDEFGHIJKLMNPR, который необходимо сдвинуть с двойной точностью. Для этого необходимо сначала сдвинуть входной код относительно старшей части регистра SR, т. е. выполнить команду SR = LSHIFT SI (HI). В результате регистр SR будет содержать следующий код 00000000 00000ABC 00000000 00000000. Далее необходимо выполнить команду SR = SR OR LSHIFT SI (LO), после чего регистр SR будет содержать код 00000000 00000ABC DEFGHIJK LMNPR000. Если опустить во второй команде часть SR OR, то биты АВС заменятся нулями и мы не получим сдвига с двойной точностью.

Детектор экспоненты извлекает экспоненту входного кода сдвигателя и помещает ее в регистр SE через мультиплексор MUX 3. В зависимости от команды (см. п. 1.17.7) детектор по разному интерпретирует входной код. В режиме HI входной код интерпретируется как число с одинарной точностью или как старшее слово числа с двойной точностью. Экспонента при этом формируется по следующему правилу: подсчитывается число старших бит с одинаковым значением; получившееся число декрементируется; результат инвертируется. Табл. 1.4 иллюстрирует формирование экспоненты в HI режиме.

Таблица 1.4

Формирование экспоненты в HI режиме

Входной код сдвигателя

Значение экспоненты

SNDDDDDD DDDDDDDD

0

SSNDDDDD DDDDDDDD

-1

SSSSSSSS SSSSSSSN

-14

SSSSSSSS SSSSSSSS

-15

Примечание к табл. 1.4: S – знаковый бит, N – не знаковый бит, D – биты не рассматриваемые детектором экспоненты.

В расширенном HI режиме (HIX) входной код интерпретируется как результат операции вычитания (сложения) ALU, которая могла вызвать переполнение. В этом случае при формировании экспоненты учитывается флаг переполнения AV (см. п. 1.17.7). Табл. 1.5 иллюстрирует формирование экспоненты в расширенном HI режиме.

Таблица 1.5

Формирование экспоненты в расширенном HI режиме

AV

Входной код сдвигателя

Значение экспоненты

1

DDDDDDDD DDDDDDDD

+1

0

SNDDDDDD DDDDDDDD

0

0

SSNDDDDD DDDDDDDD

-1

0

0

SSSSSSSS SSSSSSSN

-14

0

SSSSSSSS SSSSSSSS

-15

Табл. 1.5 показывает, что при наличии переполнения (AV = 1) экспонента равна +1. При отсутствии переполнения (AV = 0) экспонента формируется как в обычном HI режиме.

В режиме LO входной код интерпретируется как младшее слово числа с двойной точностью. В этом режиме принимается во внимание знак числа, который хранит флаг знака SS (см. п. 1.17.7 и рис. 1.8). Экспонента формируется только, если регистр SE содержит значение –15, т.е. старшее слово числа с двойной точностью содержит все нули или единицы. Табл. 1.6 иллюстрирует формирование экспоненты в LO режиме.

Таблица 1.6

Формирование экспоненты в LO режиме

SS

Входной код сдвигателя

Значение экспоненты

S

NDDDDDDD DDDDDDDD

-15

S

SNDDDDDD DDDDDDDD

-16

S

S

SSSSSSSS SSSSSSSN

-30

S

SSSSSSSS SSSSSSSS

-31

Блок сравнения экспонент используется для нахождения максимальной экспоненты массива входных чисел сдвигателя. Для этого блок сравнения сравнивает значение экспоненты, которое присутствует на выходе детектора экспоненты, с содержимым регистра SB. Если выходное значение детектора экспоненты выше, чем содержимое регистра SB, то это значение через мультиплексор MUX 1 записывается в регистр SB. Обычно перед операцией определения максимальной экспоненты (см. п. 1.17.7) в регистр SB записывается число –16 (минимально возможное значение). Очевидно, что после циклической обработки всего массива чисел код максимальной экспоненты может быть считан из регистра SB.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]