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

1.17.7. Команды shifter

А) АРИФМЕТИЧЕСКИЙ СДВИГ

[IF cond] SR = [SR OR] ASHIFT xop

(HI)

;

(LO)

Синтаксис:

Допустимые:

регистры xop условия cond

SI AR EQ LE AC

SR1 MR2 NE NEG NOT AC

SR0 MR1 GT POS MV

MR0 GE AV NOT MV

LT NOT AV NOT CE

Пример: IF LT SR = SR OR ASHIFT SI (LO);

Описание: Если команда выполняется (условие отсутствует или ве­р­нуло TRUE), то процессор производит арифметический сдвиг битов операнда. Направление и число сдвигов зависит от содержимого регистра SE (счетная величина).

Положительное число в регистре SE вызывает левый сдвиг, отрицательное – правый сдвиг. Сдвинутый операнд может быть размещен в старшей половине выходного поля SHIFTER (опция HI) или в младшей половине (опция LO). Сдвинутый операнд может быть также подвергнут операции логического ИЛИ с текущим содержимым регистра SR (опция SR OR).

При размещении сдвинутого операнда в 32-битном выходном поле слева от СЗР распространяется знак операнда, а справа от самого младшего значащего разряда (МЗР) распространяется ноль. Биты сдвинутого операнда, выходящие за SR31 (при левом сдвиге) или за SR0 (при правом сдвиге) опускаются.

При сдвиге с двойной точностью содержимое SE используется для обеих половин операнда. В первом цикле сдвигается старшая половина операнда с двойной точностью (команда ASHIFT используется с опцией HI). Младшая половина операнда с двойной точностью сдвигается с помощью команды LSHIFT, которая использует с опции LO и SR OR. Это препятствует распространению знака младшей половины операнда, что может исказить результат сдвига.

Флаги состояния: не изменяются.

Б) ЛОГИЧЕСКИЙ СДВИГ

[IF cond] SR = [SR OR] LSHIFT xop

(HI)

;

(LO)

Синтаксис:

Допустимые регистры xop и условия cond см. П. 1.17.7.А.

Пример: IF GE SR = LSHIFT SI (HI);

Описание: Если команда выполняется (условие отсутствует или ве­р­нуло TRUE), то процессор производит логический сдвиг битов операнда. Направление и число сдвигов зависит от содержимого регистра SE (счетная величина).

Положительное число в регистре SE вызывает левый сдвиг, отрицательное – правый сдвиг. Сдвинутый операнд может быть размещен в старшей половине выходного поля SHIFTER (опция HI) или в младшей половине (опция LO). Сдвинутый операнд может быть также подвергнут операции логического ИЛИ с текущим содержимым регистра SR (опция SR OR).

При левом сдвиге справа от МЗР распространяется ноль, а биты сдвинутого операнда, выходящие за SR31 опускаются. При правом сдвиге слева от СРЗ распространяется ноль, а биты сдвинутого операнда, выходящие за SR0 опускаются.

При сдвиге с двойной точностью содержимое SE используется для обеих половин операнда. В первом цикле сдвигается старшая половина операнда с двойной точностью (команда LSHIFT используется с опцией HI). Для сдвига младшей половины операнда с двойной точностью команда LSHIFT использует с опциями LO и SR OR.

Флаги состояния: не изменяются.

В) НОРМАЛИЗАЦИЯ

С

[IF cond] SR = [SR OR] NORM xop

(HI)

;

(LO)

интаксис
:

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