максимальная экспонента (с учетом знака) из всех экспонент блока. Это
значение находится в регистре SB.
Перед первым использованием команды EXPADJ в регистр SB
должно быть записано значение –16 (минимальная величина). Далее при
каждом вызове команды она извлекает экспоненту и сравнивает ее
значение с содержимым регистра SB. Если текущая экспонента больше
содержимого регистра SB, то ее значение записывается в регистр SB. В
противном случае, содержимое регистра SB не изменяется. Очевидно, что
после обработки всего блока чисел в регистре SB будет находиться
максимальная экспонента всего блока.
Команда EXPADJ является инспекционной (проверочной) командой,
поскольку не выполняет никаких сдвигов.
Эта команда не может применяться к переполненным числам и к
младшим половинам чисел с двойной точностью.
Флаги состояния: не изменяются.
Е) НЕПОСРЕДСТВЕННЫЙ АРИФМЕТИЧЕСКИЙ СДВИГ
Синтаксис:
Допустимые регистры xop см. п. 1.17.7.А.
Допустимое значение <exp> – любая константа от –128 до 127.
Пример: SR = SR OR ASHIFT SR0 BY 3 (LO); {нельзя “+3”}
Описание: Процессор производит арифметический сдвиг битов
операнда. Направление и число сдвигов зависит от значения экспоненты,
введенной непосредственным числом <exp>.
Положительное значение <exp> (перед ним нельзя ставить знак “+”)
вызывает левый сдвиг, отрицательное – правый сдвиг. Сдвинутый
операнд может быть размещен в старшей половине выходного поля
SHIFTER (опция HI) или в младшей половине (опция LO). Сдвинутый
операнд может быть также подвергнут операции логического ИЛИ с
текущим содержимым регистра SR (опция SR OR).
При размещении сдвинутого операнда в 32-битном выходном поле
слева от СЗР распространяется знак операнда, а справа от МЗР
распространяется ноль. Биты сдвинутого операнда, выходящие за SR
31
(при левом сдвиге) или за SR
0
(при правом сдвиге) опускаются.
При сдвиге с двойной точностью константа <exp> используется для
обеих половин операнда. В первом цикле сдвигается старшая половина
операнда с двойной точностью (команда ASHIFT используется с опцией
HI). Младшая половина операнда с двойной точностью сдвигается с
помощью команды LSHIFT, которая использует с опции LO и SR OR.