Структурнофункциональная организация процессоровАрифметическологическое устройство. Назначение и состав АЛУ. Арифметическо–логическое устройство предназначено:

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

R=X+Y                      сложение X и Y

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

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

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

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



R=YXCI–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 может располагаться в регистрах AY1 или AF, млад­шая часть — в регистре AY0;

●     делитель X может располагаться в AХ0, AХ1 или любом регистре результата. При выполнении команды DIVS:

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

●     содержимое регистра AY0 сдвигается влево на один разряд, при этом самый старший бит AY0 займет место самого младшего бита LSB в регистре AF;

●     пятнадцать младших бит регистра результата R ALU займут место оставших­ся пятнадцати старших разрядов регистра AF.

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

Для рассмотрения операции деления беззнаковых чисел (DIVQ) воспользуем­ся схемой на рис. 8.3.3.

рис. 8.3.3

В исходном состоянии:

●     старшая часть делимого Y должна располагаться в регистре AF, младшая часть — в регистре AY0;

●     делитель X может располагаться в AX0, AX1 или любом регистре результата AR;

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

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

●     с помощью операции исключающее ИЛИ над старшими битами делителя и операнда 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; MRX*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 с шины DMD все биты 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, если старший разряд регистра MR1 равен 0;

●     отрицательное значение 11111111 1000000000000000 0000000000000000, если старший разряд регистра MR1 равен 1.

Операция насыщения используется после умножений–аккумуляций для конт­роля правильности полученных результатов. Если MV = 0, то операция насыщения оставляет результат неизменным.

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

рис. 8.3.5

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

 

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

●     детектор экспоненты для определения степени операнда (см. ниже);

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

●     регистр результата SR (Shifter Result) для хранения 32–разрядного результата сдвигового массива, состоящий из двух 16–битных регистров SR0, SR1. Ин­формация в регистр 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–разрядного операнда и может находиться в трех состояниях, по–разному интер­претирующих степень входного операнда:

●     в состоянии HI входной операнд воспринимается как двоичное число с одинар­ной точностью или верхняя половина двоичного числа с двойной точностью. Детектор экспоненты определяет степень операнда — число ведущих знако­вых разрядов, на которое должен быть сдвинут влево входной операнд, что­бы остался только один (старший) знаковый бит, и вырабатывает отрицатель­ный код для реализации требуемого сдвига. Этот код может служить экспонентой для мантиссы, полученной удалением знаковых бит;

●     в состоянии HIX (HI–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). На другой вход компаратора с выхода детектора экспоненты подается значение экспоненты EXP1 первого элемента массива. Если EXP1>SB, то значение EXP1 загружается в ре­гистр SB, т. е. SB = EXP1. В противном случае содержимое SB остается неизмен­ным. Подобным образом обрабатываются последующие элементы массива. Пос­ле обработки всех элементов массива регистр SB будет содержать наибольшую степень, значение которой лежит в пределах от –15 до 0.

Отметим, что операция определения экспоненты является просмотровой опе­рацией. Для выполнения операции нормализации необходимо скопировать со­держимое регистра SB в регистр экспоненты SE.

В табл. 8.3.2 приведен пример определения экспоненты блока из трех элемен­тов. Из табл. 8.3.2 следует, что степень самого большого из приведенных чисел массива составляет –3.

табл. 8.3.2

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

Примеры.

Рассмотрим случай, когда входной операнд в виде 16–разрядного двоичного кода 10110110 10100011 (0xB6A3) загружается в регистр операндов SI.

1. Логический сдвиг (LSHIFT) вправо на 5 разрядов относительно старшей половины регистра результата SR (SR1).

Команды:                  SI = 0xB6A3;

SR = LSHIFT SI BY –5 (HI);

Вход SI                      10110110 10100011

Значение сдвига       –5

Регистр SR                00000101 10110101 00011000 00000000

2. Логический сдвиг (LSHIFT) влево на 5 разрядов относительно младшей половины регистра результата  SR  (SR0).

Команды:                  SI = 0xB6A3;

SR = LSHIFT SI BY 5 (LO);

Вход SI                      10110110 10100011

Значение сдвига       +5

Регистр                      00000000 00010110 11010100 01100000

3. Арифметический сдвиг (ASHIFT) вправо на 5 разрядов относительно старшей поло­вины регистра результата  SR  (SR1).

Команды:                  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 01011101 (младшая половина)

Регистр 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 значение порядка используется на втором этапе для сдвига обоих частей числа с двойной точностью. При этом порядок обработки (старшей или младшей половины числа) может быть выбран любой с помощью модификаторов HI и LO. Первая половина числа норма­лизуется без модификатора OR, вторая половина числа — с модификатором OR, чтобы получить правильный результат.

Примеры.

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

SE = EXP AR (HI);                          SE устанавливается –3}

SR = NORM AR (HI)                       {SR = 10110110 10100000 00000000 00000000}

Так как использовался модификатор HI, результат помещен в регистр SR1.

2. Нормализации с двойной точностью числа, хранящегося в регистре результата MR1 = 11110110 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 10100000 00000000 00000000}

3. Нормализации числа с двойной точностью, хранящегося в регистре результата MR1 = 11111111 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 10100000 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 = 01111101 00011001}

 

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


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



Особенности нового ГОСТа по качеству электроэнергии
июнь 16, 2014 4347

Особенности нового ГОСТа по качеству электроэнергии

С начала 2013 года вступил в действие обновлённый стандарт качества ГОСТ Р 54149, в…
рис. 1.141
окт 17, 2016 736

Влияние различных факторов на выходное напряжение операционного усилителя

При практическом использовании операционного усилителя необходимо учитывать, что…
dif1
апр 03, 2017 1914

Дифференциальная защита, диф реле, принцип работы, применение

Дифференциальная защита - одна из самых быстродействующих. Для нее не требуется выдержки…
Последовательный обмен
нояб 11, 2015 1611

Способы и методы последовательного обмена

Принципы обмена. Последовательный обмен (ввод–вывод данных), когда байт данных передается…