Структурно–функциональная организация арифметическо–логического устройства (АЛУ)

Пример HTML-страницы

Назначение и состав АЛУ

Арифметическо–логическое устройство предназначено:

● для реализации стандартного набора арифметических и логических операций над 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 может располагаться в регистрах AY1 или AF, млад­шая часть — в регистре AY0;
  • делитель X может располагаться в AХ0, AХ1 или любом регистре результата. При выполнении команды DIVS:
  • с помощью операции исключающее ИЛИ над старшими битами делимого и делителя определяется знаковый бит частного, который загружается в самый младший разряд регистра AY0, а также в регистр арифметического статуса ASTAT как флаг AQ;
  • содержимое регистра AY0 сдвигается влево на один разряд, при этом самый старший бит AY0 займет место самого младшего бита LSB в регистре AF;
  • пятнадцать младших бит регистра результата R ALU займут место оставших­ся пятнадцати старших разрядов регистра AF. Таким образом, в результате выполненной операции DIVS начальное содержи­мое пары регистров AF–AY0 сдвигается влево на один разряд, а знаковый бит час­тного помещается в самый младший разряд 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 = 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 с шины 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):

  • сдвиговый массив размерности 16×32, в котором исходный 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 для этого случая.

Понравилась статья? Поделиться с друзьями:
Все об энергетике, электротехнике и электронике
Комментарии: 1
  1. Андрей

    Здравствуйте, уважаемые.
    Понравился материал про Процессор и АЛУ.
    Буду благодарен, если сообщите, источник, т.е. имя автора и название книги.
    Спасибо.

Добавить комментарий

;-) :| :x :twisted: :smile: :shock: :sad: :roll: :razz: :oops: :o :mrgreen: :lol: :idea: :grin: :evil: :cry: :cool: :arrow: :???: :?: :!: