Почему могут спускать колеса авто смотрите тут kamael.com.ua
Как снять комнату в коммунальной квартире здесь
Дренажная система водоотвода вокруг фундамента - stroidom-shop.ru

Структурнофункциональная организация процессоровАрифметическо

логическое устройство. Назначение и состав АЛУ.
Арифметическо–логическое устройство предназначено:
● для реализации стандартного набора арифметических и логических операций над 16–разрядными операндами X,
Y
, а также многоцикловой операции деле­ния с использованием двух имеющихся примитивов. Ниже приводится
список стандартных функций АЛУ:
R
=
X
+
Y
сложение X и
Y

R
=
X
+
Y
+
CI
сложение X и
Y
с переносом;
R
=
X

Y
вычитание
Y
из X;
R
=
X

Y

CI
–1 вычитание
Y
из X с заемом;
R
=
Y

X
вычитание X из
Y
;
R
=
Y

X

CI
–1 вычитание X из
Y
с заемом;
R
=–
X
арифметическое отрицание X;
R
=–
Y
арифметическое отрицание
Y
;
R
=
Y
+1 инкремент
Y
;
R
=
Y
–1 декремент
Y
;
R
=
PASS

X результат равен операнду X;
R
=
PASS

Y
результат равен операнду
Y
;
R
=0 (
PASS

0) очистить результат;
R
=
ABS

X абсолютное значение X;
R
=
X

AND

Y
логическое умножение;
R
=
X

OR

Y
логическое сложение;
R
=
X

XOR

Y
сложение по модулю 2;
R
=
NOT
X логическое отрицание X;
R
=
NOT

Y

логическое отрицание
Y
;
● для выдачи информации о состоянии процессора. После выполнения опера­ции АЛУ генерирует (или обновляет) шесть флагов:

AZ
— флаг нулевого результата (при всех стандартных операциях);
• AN
— флаг отрицательного результата (при всех стандартных операциях);

AV
— флаг переполнения (при всех стандартных операциях);
• АС — флаг переноса (при всех Стандартных операциях);

AS
— флаг знака входного Х–операнда (при операции
ABS);

AQ
— флаг примитива деления (при делении). рис. 8.3.1
В состав блока АЛУ входят (рис. 8.3.1):
● непосредственно

ALU
с двумя регистрами для входных операндов X,
Y
и ре­гистром результата
R;
● входные регистры

АХ0, АХ1 и
AY0, AY1
для хранения Х– и
Y
–операндов;
● регистр результата

AR,
в который загружаются результаты выполненной в АЛУ операции для их вывода на шину результата
R
или на шину данных па­мяти данных
DMD;
● регистр обратной связи

AF,
в который загружаются результаты выполненной в АЛУ операции с целью их использования в качестве операнда
Y;
● мультиплексоры

для выбора загружаемых 16–разрядных операндов в регистры
AY0, AY1, AR, X, Y.

Арифметическо–логическое устройство содержит два набора (банка) про­граммно доступных регистров
A
Х0,
A
Х1,
AY0, AY1, AR, AF.
В каждый момент вре­мени доступным является лишь один набор. Для активизации набора можно ис­пользовать бит
SEC_REG
в позиции
MSTAT.0
регистра режима и статуса
MSTAT
(табл. 8.3.9) или команды
DIS SEC_REG, ENA SEC_REG. табл. 8.3.9
Путем установки бита
AR
_
SAT
= 1 (позиция
MSTAT
.3 в регистре режима и стату­са процессора) регистр результата
AR
переводится в режим насыщения, в кото­ром его содержимое при переполнении (флаг
AV
=

1) фиксирует:
● максимальное положительное число 0111111111111111, если флаг переноса
AC
= 0;
● максимальное отрицательное число 1000000000000000, если
AC
= 1.
Бит
AV
_
LATCH
= 1 (позиция
MSTAT
.2 в регистре режима и статуса процессора) позволяет установить режим «защелки». В этом режиме:
● после переполнения АЛУ флаг
AV
остается поднятым (
AV
= 1) и в тех случаях, когда последующие команды не вызывают переполнения АЛУ;
● флаг
AV
может быть очищен только прямой записью нуля в позицию
ASTAT
.2 регистра арифметического статуса ASTAT (табл. 8.3.8). табл. 8.3.8
Деление.

Для операции деления в АЛУ используется дополнительная сдви­говая логика, не показанная на рис. 8.3.1. Деление может быть знаковым и без­знаковым. Деление беззнаковых чисел реализуется с помощью команды–прими­тива
DIVQ
, при выполнении которой формируется один бит частного за процес­сорный цикл. Шестнадцатикратное выполнение команды
DIVQ
позволяет полу­чить 16 бит частного. При делении знаковых чисел предварительно определяется знак частного с помощью другой команды–примитива
DIVS
. После этого 15–крат­ное использование команды–примитива
DIVQ
позволяет получить значение част­ного с одинарной точностью. рис. 8.3.2
Для рассмотрения операции определении знака частного (
DIVS
) воспользуем­ся схемой на рис. 8.3.2. В исходном состоянии:
● старшая часть делимого
Y
может располагаться в регистрах
A
Y1
или
A
F,
млад­шая часть — в регистре
A
Y0;
● делитель

X может располагаться в
A
Х0,
A
Х1 или любом регистре результата. При выполнении команды
DIVS:
● с помощью операции исключающее ИЛИ над старшими битами делимого и делителя определяется знаковый бит частного, который загружается в самый младший разряд регистра
A
Y0,
а также в регистр арифметического статуса
ASTAT
как флаг
A
Q;
● содержимое регистра

AY0
сдвигается влево

на один разряд, при этом самый старший бит
A
Y0
займет место самого младшего бита
LSB
в регистре
A
F
;

пятнадцать младших бит регистра результата
R

ALU

займут место

оставших­ся пятнадцати старших разрядов регистра
AF
.
Таким образом, в результате выполненной операции
DIVS
начальное содержи­мое пары регистров
AF

AY
0 сдвигается влево на один разряд, а знаковый бит час­тного помещается в самый младший разряд
A
Y0.
Для рассмотрения операции деления беззнаковых чисел
(DIVQ)
воспользуем­ся схемой на рис. 8.3.3. рис. 8.3.3
В исходном состоянии:
● старшая часть делимого
Y
должна располагаться в регистре
AF,
младшая часть — в регистре
A
Y0;
● делитель

X
может располагаться в
AX
0,
AX
1 или любом регистре результата
AR;
● флаг

A
Q
должен быть сброшен
(AQ
= 0). При выполнении команды
DIVQ
;

● действия
ALU
определяются состоянием флага
AQ
. При
AQ
= 1 на выходе
ALU
результат
R
=
Y
+
X
; при
AQ
= 0 —
R
=
Y

X
;
● с помощью операции исключающее ИЛИ над старшими битами делителя и операнда
R
на выходе
ALU

определяется флаг

AQ
, который загружается в ре­гистр арифметического статуса
ASTAT
, а также после инвертирования в са­мый младший разряд регистра
AY0
как очередной бит частного;
● содержимое регистра
AY0
сдвигается влево

на один разряд, при этом самый старший бит
AY0
займет место самого младшего бита
LSB
в регистре А
F
;
● пятнадцать младших бит регистра результата
AR

ALU

займут мест

оставших­ся пятнадцати старших разрядов регистра
AF
. Формат частного определяется из формата делимого и делителя:
NL


DL
+ 1 — число бит слева от десятичной точки частного;
NR


DR

– 1 — число бит справа от десятичной точки частного,
где
NL
,
NR
— число бит слева и справа от десятичной точки делимого;
DL
,
DR
— число бит слева и справа от десятичной точки делителя.

Для получения правильного результата при делении двух целых чисел (дели­мое в формате 32.0 и делитель в формате 16.0) необходимо предварительно сдвинуть делимое влево на один разряд, т. е. перевести делимое в формат 1.31.
Умножитель–аккумулятор.

Назначение и состав. Умножитель–акумулятор МАС позволяет выполнить умножение двух 16–разрядных операндов (Х*
Y
), ум­ножение с накоплением суммы и разности (
MR
+
X
*
Y
;
MR

X
*
Y
), очистку результата
MR
, где
MR
— содержимое регистра результата. рис. 8.3.4
В состав умножителя–аккумулятора входят (рис. 8.3.4):
● умножитель,

содержащий два входных 16–разрядных порта
X
,
Y
и один 32–раз­рядный выходной порт произведения
P
. Умножитель позволяет перемножать любые комбинации операндов
X
и
Y
: знаковый на знаковый (
SS
), беззнаковый на знаковый (
US
), знаковый на беззнаковый (
SU
), беззнаковый на беззнаковый (
UU
);
● два входных регистра MX0, MX1 и
MY0, MY1
для хранения Х– и
Y–
операндов;
● сумматор–вычитатель,

предназначенный для сложения и вычитания 40–раз­рядного операнда и 32–разрядного произведения. Разрядность сумматора–вычитателя превышает 32 бита, чтобы разрешить промежуточные переполне­ния при выполнении нескольких операций подряд. При появлении значащих бит выше 32–разрядной границы устанавливается флаг переполнения умно­жителя
MV;
● регистр результате

MR
шириной 40 бит, в который загружаются результаты выполненной в сумматоре–вычитателе операции для их вывода на шину результата
R
или на шину данных памяти данных
DMD.
Регистр
MR
состоит из двух 16–разрядных регистров
MR0, MR1
и одного 8–разрядного регистра
MR2.
Каждый из этих регистров может быть напрямую загружен через шину
DMD.
Загрузка
MR0
не влияет на содержимое регистров
MR1, MR2.
При за­грузке регистра
MR1
с шины
D
MD
все биты
MR2
автоматически заполняются знаковым битом. Для заполнения регистра
MR2
другими значениями, его следует загружать после
MR1.
Выводы регистра
MR2
подключены к младшим битам шины
DMD.
При чтении регистра
MR2
на шины
DMD
и
R
старшие 8 разрядов заполняются знаковыми битами;
● регистр обратной связи

MF,
в который загружаются результаты (биты 16–31), выполненной в сумматоре–вычитателе операции, с целью их использования в качестве операнда
Y;
● мультиплексоры

для выбора источника операндов при их загрузке в регистры
MY0, MY1, MR0, MR1, MR2
и порты X,
Y
умножителя, а также для вывода ре­зультатов из регистров
MR0, MR1, MR2
на шину
DMD.
Умножитель–аккумулятор содержит два набора программно доступных регист­ров MX0, MX1,
MY0, MY1, MR0, MR1, MR2, MF.
В каждый момент времени доступным является лишь один набор. Для активизации набора используется бит
SEC_REG
в позиции
MSTAT.0
регистра режима и Статуса
MSTAT
(табл. 8.3.9).
Основные режимы.

Умножитель–аккумулятор обеспечивает выполнение операций в двух стандартных режимах:
● в дробном режиме

(для чисел в формате 1.15) при загрузке 32–битного произ­ведения Р в регистр результата
MR
происходит знаковое расширение и сдвиг содержимого влево на 1 бит. В частности, 31–й бит произведения Р соответ­ствует 32–у биту регистра
MR
(или биту 0 регистра
MR2),
а нулевой бит Р — первому биту регистра
MR
(или
MR0).
Младший (нулевой) бит
MR
(или
MR0)
очищается, старшие семь бит
MR
(или
MR2)
заполняются знаком (или 31–м битом) произведения
P
;
● в целочисленном режиме (для

целых чисел в формате 16.0) 32–битный ре­гистр произведения
P
загружается в регистры
MR0, MR1.
Восемь бит регист­ра
MR2
заполняются знаком произведения Р.
Выбор режима осуществляется битом
M_MODE
(позиция
MSTAT.4)
регистра режима и состояния
MSTAT
(табл. 8.3.9):
M_MODE=0
— дробный режим;
M_MODE
= 1 — целочисленный режим. В обоих режимах произведение
P
подает­ся на вход сумматора–вычитателя. табл. 8.3.7
Переполнение.

После выполнения каждой операции в сумматоре–вычита­теле формируется флаг переполнения
MV,
который заносится в позицию
ASTAT.6
регистра арифметического статуса
ASTAT
(табл. 8.3.7). Флаг переполне­ния устанавливается
(MV =
1) в том случае, если результат на выходе сумматора–вычитателя, интерпретируемый как число с дополнением до 2, пересекает 32–бит­ную границу. В этом случае 9 старших (знаковых) разрядов 40–битного регистра результата не равны одновременно 0 или 1.
Насыщение.

Эта операция выполняется при установленном флаге переполне­ния (
MV
= 1) в регистре арифметического статуса
ASTAT
(табл. 8.3.7). В ре­зультате операции содержимое регистра результата
MR

принимает максимальное:
● положительное значение 00000000 0111111111111111 1111111111111111, если старший разряд регистра
MR
1 равен 0;
● отрицательное значение 11111111 1000000000000000 0000000000000000, если старший разряд регистра
MR
1 равен 1.
Операция насыщения используется после умножений–аккумуляций для конт­роля правильности полученных результатов. Если
MV
= 0, то операция насыщения оставляет результат неизменным.
Округление.

С помощью опции
RND
аккумулятор позволяет округлять 40–битный результат до 16–битного. Округленный результат передается в регистр
MR
или
MF
. При использовании регистра
MR
округленный 16–битный результат содержится в регистре
MR
1. Содержимое регистров
MR
2,
MR
1 можно рассмат­ривать как результат, округленный до 24 бит. рис. 8.3.5
Устройство сдвига

. Назначение и состав. Устройство сдвига
SHIFTER

предназначено

для выполнения сдвиговых операций 16–разрядных операндов, включающих арифметические и логические сдвиги, нормализацию и денормализацию, определение экспоненты. Устройство сдвига содержит (рис. 8.3.5):
● сдвиговый массив

размерности 16x32, в котором исходный 16–разрядный операнд за один цикл помещается на любую позицию в 32–разрядном выход­ном слове, начиная с полностью сдвинутого операнда вправо и кончая пол­ностью сдвинутым операндом влево;
● детектор экспоненты

для определения степени операнда (см. ниже);
● регистр операндов

SI
(
Shifter

InOut
), обеспечивающий 16–разрядный операнд для сдвигового массива и детектора экспоненты;
● регистр результата

SR
(
Shifter

Result
) для хранения 32–разрядного результата сдвигового массива, состоящий из двух 16–битных регистров
SR
0,
SR
1. Ин­формация в регистр
SR
может быть занесена с шины данных памяти данных
DMD
и считана на шины
DMD
и
R
. Регистр
SR
может быть также задейство­ван в цепи обратной связи через логику управления
OR
/
PASS
для реализации сдвигов с двойной точностью;
● восьмиразрядный регистр экспоненты
SE
(
Shifter

Exponent
), содержащий по­рядок в виде 8–разрядного дополнительного кода при выполнении операций нормализации и денормализации;
● пятиразрядный регистр для блочных операций с плавающей точкой
SB
(
Shifter

Block
). Он содержит значение экспоненты блока, т. е. то значение, на которое компоненты блока должны быть сдвинуты, чтобы нормализовать самое большое значение. Чтение и запись регистра осуществляется через 5 младших разрядов шины
DMD
. Значения записываются в дополнительном коде в формате 5.0;
● логику

OR
/
PASS
, позволяющую получить правильный результат (см. приве­денные ниже примеры) при операциях с двойной точностью. При выборе мо­дификатора
PASS
результат сдвигового массива загружается в регистр
SR
без изменения. С помощью модификатора
OR
выполняется операция ИЛИ над результатом сдвигового массива и текущим содержимым регистра
SR
. Результат операции ИЛИ помещается в регистр
SR
.
При считывании информации из регистров
SE
,
SB
на шину
DMD
происходит расширение знака до 16–битного значения. Устройство сдвига содержит два бан­ка регистров
SI
,
SE
,
SR
,
SB
. Для выбора банка используется бит
SEC
_
REG
в пози­ции
MSTAT
.0 регистра режима и статуса
MSTAT
(табл. 8.3.9).
Принцип работы устройства.

Сдвиг входного 16–разрядного операнда осуществляется под действием контрольного кода и сигнала
HI/LO,
поступающих соответственно на входы С и
R
сдвигового массива. Контрольный код представ­ляет собой 8–разрядный операнд, указывающий направление сдвига и число раз­рядов, на которое следует произвести сдвиг. Положительное значение операнда указывает на левый сдвиг (или сдвиг вверх), отрицательное — на правый сдвиг (или сдвиг вниз). Контрольным кодом могут служить содержимое регистра
SE
в прямой и инверсной форме или непосредственно команда. Сигнал
HI/LO
опре­деляет начальную точку сдвига: в режиме
HI
сдвиги производятся относительно
SR1
(верхней половины выходного поля); в режиме
LO
— относительно
SR0
(ниж­ней половины).
Устройство сдвига заполняет все биты 32–битного результата справа от пози­ции операнда нулями, слева — битом расширения X, который может быть взят из трех источников: знаковый бит операнда, бит переноса АС из регистра
ASTAT
и 0.
Детектор экспоненты

(степени) позволяет выделить степень из входного 16–разрядного операнда и может находиться в трех состояниях, по–разному интер­претирующих степень входного операнда:
● в состоянии
H
I
входной операнд воспринимается как двоичное число с одинар­ной точностью или верхняя половина двоичного числа с двойной точностью. Детектор экспоненты определяет степень операнда — число ведущих знако­вых разрядов, на которое должен быть сдвинут влево входной операнд, что­бы остался только один (старший) знаковый бит, и вырабатывает отрицатель­ный код для реализации требуемого сдвига. Этот код может служить экспонентой для мантиссы, полученной удалением знаковых бит;
● в состоянии
H
IX (
H
I–eXtend stade)
входной операнд интерпретируется как ре­зультат операции сложения–вычитания, при выполнении которой в АЛУ могло произойти переполнение. В этом состоянии детектор экспоненты принимает во внимание флаг
AV
арифметического переполнения. Если
AV
= 1, детектор экс­поненты выдает степень +1. Это свидетельствует о том, что необходим лишний бит в нормализованной мантиссе, в качестве которого служит флаг переноса АС в АЛУ. При
AV=0
разницы между состояниями
HIX
и
HI
не существует. В состояниях
HIX
и
HI
при определении степени детектор экспоненты выдает бит
SS
(
Shifter

Sign
), который заносится в регистр арифметического статуса
ASTAT
(бит
ASTAT
.7). При
AV
= 0 бит
SS
является старшим разрядом входного операнда. При
AV
= 1 выводится инверсия бита
SS
для сохранения знака пе­реполнившегося значения;
● в состоянии
LO
входной операнд интерпретируется как младшая половина числа с двойной точностью, а выводимый в регистр арифметического стату­са
ASTAT
сигнал
SS
— как знак числа.
Регистр экспоненты
SE
загружается результатом детектора экспоненты в том случае, когда старшая половина 32–битного числа с двойной точностью, обрабо­танная первой, содержит лишь знаковые биты. При этом вывод детектора экспо­ненты сдвигается на –16, чтобы принять во внимание тот факт, что операнд на са­мом деле является младшей половиной 32–разрядного операнда.
В табл. 8.3.1 для рассмотренных состояний приведены входные операнды и соответствующие им значения экспоненты (в графе ДЭ — детектор экспоненты). табл. 8.3.1
Ниже с использованием примеров рассмотрены особенности выполнения опе­раций определения экспоненты блока, немедленных сдвигов, денормализации и нормализации.
Определение экспоненты (степени) блока.

Эта операция, выполня­емая с помощью команды
EXPANDJ
, позволяет определить степень самого боль­шого по масштабу числа из массива чисел. рис. 8.3.5
При определении экспоненты используется регистр блочных операций
SB
. В исходном состоянии регистр
SB
загружен числом –16 (
SB
= –16), которое посту­пает на один из входов цифрового компаратора (см. рис. 8.3.5). На другой вход компаратора с выхода детектора экспоненты подается значение экспоненты
EXP
1 первого элемента массива. Если
EXP
1>
SB
, то значение
EXP
1 загружается в ре­гистр
SB
, т. е.
SB
=
EXP
1. В противном случае содержимое
SB
остается неизмен­ным. Подобным образом обрабатываются последующие элементы массива. Пос­ле обработки всех элементов массива регистр
SB
будет содержать наибольшую степень, значение которой лежит в пределах от –15 до 0.
Отметим, что операция определения экспоненты является просмотровой опе­рацией. Для выполнения операции нормализации необходимо скопировать со­держимое регистра
SB
в регистр экспоненты
SE
.
В табл. 8.3.2 приведен пример определения экспоненты блока из трех элемен­тов. Из табл. 8.3.2 следует, что степень самого большого из приведенных чисел массива составляет –3. табл. 8.3.2
Немедленные сдвиги.

С помощью команд немедленного сдвига выполня­ются операции логического или арифметического сдвига влево (вверх)/вправо (вниз) на требуемое число разрядов. В командах определено направление и раз­мер сдвига. Сдвиг происходит под действием контрольного кода в виде 8–битно­го знакового числа, который берется из команды. Регистр экспоненты
SE
в не­медленных сдвигах не задействован.
Примеры.

Рассмотрим случай, когда входной операнд в виде 16–разрядного двоичного кода 10110110 10100011 (0
xB
6
A
3) загружается в регистр операндов
SI
.
1. Логический сдвиг (
LSHIFT
) вправо на 5 разрядов относительно старшей половины регистра результата
SR
(
SR
1).
Команды
: SI = 0xB6A3;
SR = LSHIFT SI BY –5 (HI);
Вход
SI

10110110 10100011
Значение сдвига –5
Регистр
SR
00000101 10110101 00011000 00000000
2. Логический сдвиг (
LSHIFT
) влево на 5 разрядов относительно младшей половины регистра результата
SR
(
SR
0).
Команды
: SI = 0xB6A3;
SR = LSHIFT SI BY 5 (LO);
Вход
SI
10110110 10100011
Значение сдвига +5
Регистр 00000000 00010110 11010100 01100000
3. Арифметический сдвиг
(
ASHIFT
)
вправо на 5 разрядов относительно старшей поло­вины регистра результата
SR
(
SR
1).
Команды
: SI = 0xB6A3;
SR = ASHIFT SI BY –5 (HI);
Вход
SI
10110110 10100011
Значение сдвига –5
Регистр
SR
11111101 10110101 00011000 00000000
Денормализация.

Денормализация числа — это его сдвиг на заданное число разрядов, которое хранится в регистре экспоненты
SE
. Поэтому при денормализации контрольный код берется из регистра
SE
, а не из команды как при не­медленных сдвигах. Фактически денормализация преобразует число с плавающей точкой в число с фиксированной точкой.
Пример.

Покажем особенности этой операции на примере денормализации числа с двойной точ­ностью. Пусть содержимое регистра
SE

= –3. В этом случае необходимо выполнить в два этапа (в любой последовательности):
● арифметический сдвиг

на три разряда вправо старшей половины числа, представлен­ного в виде дополнительного кода, или логический сдвиг старшей половины беззнако­вого числа;
● логический сдвиг

на три разряда вправо младшей половины числа.
На втором этапе при сдвиге всегда используется модификатор
OR
,
чтобы не затиралась предыдущая половина результата.
1 –
й

этап
.
SR

=

ASHIFT SI (HI);
Первый операнд 10110110 10100011 (старшая половина)
Регистр
SR
11110110 11010100 01100000 00000000
2–
й

этап
.
SR

=

SR OR LSHIFT (LO);
Второй операнд 01110110 0101
1

101

(младшая половина)
Регистр
SR
11110110 11010100 01101110 11001011
Отметим, что при выполнении на втором этапе логического сдвига пропадают три млад­ших разряда второго операнда.
Нормализация.

Нормализация числа в виде дополнительного кода — ото такой сдвиг числа, при котором остается только один знаковый бит. При выполне­нии операции нормализации фиксируется число разрядов, на которое сдвигается операнд. Поэтому операцию нормализации можно считать как преобразование числа с фиксированной точкой в число с плавающей точкой, имеющее порядок и мантиссу.
На первом этапе нормализации чисел с одинарной точностью по команде
EXP
определяется порядок числа, на втором по команде
NORM
реализуется требу­емый сдвиг. Обе команды выполняются с использованием модификаторов
HI
или
LO
, а команда
NORM
дополнительно распознает также модификаторы
PASS
и
OR
. При выполнении команды
NORM
используется содержимое регистра экспоненты
SE
со знаком минус (рис. 8.3.5), чтобы произвести сдвиг в нужную сторону.
Нормализация чисел с двойной точностью выполняется по приведенной схеме, однако на первом этапе старшая половина числа обработать первой. При определении порядка старшей половины числа значение порядка загружается в регистр экспоненты
SE.
Младшая половина числа изменит содержимое
SE
только в том случае, когда все биты старшей половины являются знаковыми, т.е. при
SE = –15.
В
этом случае в регистр
SE
будет загружен порядок
(–16...–31, табл.
8.3.1) младшей половины числа. Зафиксированное в
SE
значение порядка используется на втором этапе для сдвига обоих частей числа с двойной точностью. При этом порядок обработки (старшей или младшей половины числа) может быть выбран любой с помощью модификаторов
H
I
и
LO.
Первая половина числа норма­лизуется без модификатора
OR
,
вторая половина числа — с модификатором
O
R,
чтобы получить правильный результат.
Примеры.

1. Нормализация числа 11110110 11010100, хранящегося в регистре результата
AR
(АЛУ), с одинарной точностью.
SE

=

EXP AR (HI);

SE
устанавливается –3}
SR

=

NORM AR (HI) {SR
= 10110110 10100000 00000000 00000000}
Так как использовался модификатор
HI,
результат помещен в регистр
SR1.
2. Нормализации с двойной точностью числа, хранящегося в регистре результата
MR1

= 11
110110 11010100

(старшая половина) и
MR0
= 01101110 11001011 (младшая
половина) умножителя–аккумулятора — типичный случай.
SE

=

EXP MR1 (HI);
{определение порядка старшей половины числа;}

SE
устанавливается –3}
SE

=

EXP MR0
(LO);
{определение порядка младшей половины числа:}


SE
сохраняется –3}
SR

=

NORM MR1 (HI)
{нормализация старшей половины числа
(SE

=

–3):}
{SR = 10110110 10100000 00000000 00000000}
SR = SR OR NORM MR0 (LO) {
нормализация

младшей

половины

числа
}
{(SE

=

–3):}

{SR

=

10110110

10100

000 00000000 00000000}

3. Нормализации числа с двойной точностью, хранящегося в регистре результата
MR1

=

1

1111111 11111111

(старшая половина) и
MR0

=

11110110

11010100

(младшая половина) умножителя–аккумулятора — случай, когда старшая половина числа содержит только знаковые биты.
SE

=

EXP MR1 (HI);
{определение порядка старшей половины числа:}

SE
устанавливается –15}
SE

=

EXP MR0 (LO);
{определение порядка младшей половины числа:}


SE
устанавливается –19}
SR

=

NORM MRl (HI)
{нормализация старшей половины числа
(SE

=


19):}

{SR

=

00000000
00000000 00000000 00000000}

{старшая половина сдвигается вне пределов видимости}
SR

=

SR OR NORM MR0
(LO)
{нормализация младшей половины числа}
{(SE

=

–19):}

{SR

=

10110110

10100

000 00000000 00000000}

4. Нормализация числа 11111010 00110010 с одинарной точностью, хранящегося в регистре результата
AR
(АЛУ). Случай, когда в
AR
произошло переполнение, т. е. флаг пе­реполнения
AV

=

1,
при этом флаг переноса АС, фиксирующий истинный знаковый бит опе­ранда, равен 0. В рассматриваемом случае при определении порядка используется расши­ренный модификатор
HIX
(см. табл. 8.3.1).
SE

=

EXP AR (HIX);

SE
устанавливается +1}
SR

=

NORM AR (HI) {SR

=

01
111101 00011001

}
Следует отметить, что нормализация с модификатором
HIX
при определении порядка дает правильный результат и при
AV
=
0, что обусловлено тождественностью модификаторов
HIX
и
HI
для этого случая.



Рекомендуйте эту статью другим!