- Назначение и состав АЛУ
- Операция деление в АЛУ
- Назначение и состав умножителя-акумулятора в АЛУ
- Основные режимы умножителя-аккумулятора АЛУ
- Операция переполнения в АЛУ
- Операция насыщения в АЛУ
- Операция округления в АЛУ
- Назначение и состав устройства сдвига
- Принцип работы устройства
- Определение экспоненты (степени) блока
- Команда немедленные сдвиги
- Логические сдвиги
- Денормализация
- Нормализация
Назначение и состав АЛУ
Арифметическо–логическое устройство предназначено:
? для реализации стандартного набора арифметических и логических операций над 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):
- непосредственно 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.
Путем установки бита 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.1. Деление может быть знаковым и беззнаковым. Деление беззнаковых чисел реализуется с помощью команды–примитива DIVQ, при выполнении которой формируется один бит частного за процессорный цикл. Шестнадцатикратное выполнение команды DIVQ позволяет получить 16 бит частного.
При делении знаковых чисел предварительно определяется знак частного с помощью другой команды–примитива DIVS.
После этого 15–кратное использование команды–примитива DIVQ позволяет получить значение частного с одинарной точностью. Для рассмотрения операции определении знака частного (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.
В исходном состоянии:
- старшая часть делимого 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):
- умножитель, содержащий два входных 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 подается на вход сумматора–вычитателя.
Операция переполнения в АЛУ
После выполнения каждой операции в сумматоре–вычитателе формируется флаг переполнения 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 бит. Устройство сдвига.
Назначение и состав устройства сдвига
Устройство сдвига 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 для рассмотренных состояний приведены входные операнды и соответствующие им значения экспоненты (в графе ДЭ — детектор экспоненты).
Ниже с использованием примеров рассмотрены особенности выполнения операций определения экспоненты блока, немедленных сдвигов, денормализации и нормализации.
Определение экспоненты (степени) блока
Эта операция, выполняемая с помощью команды EXPANDJ, позволяет определить степень самого большого по масштабу числа из массива чисел. При определении экспоненты используется регистр блочных операций 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–битного знакового числа, который берется из команды. Регистр экспоненты SE в немедленных сдвигах не задействован.
Примеры. Рассмотрим случай, когда входной операнд в виде 16–разрядного двоичного кода 10110110 10100011 (0xB6A3) загружается в регистр операндов SI.
Логические сдвиги
- Логический сдвиг (LSHIFT) вправо на 5 разрядов относительно старшей половины регистра результата SR (SR1). Команды: SI = 0xB6A3; SR = LSHIFT SI BY –5 (HI); Вход SI 10110110 10100011 Значение сдвига –5 Регистр SR 00000101 10110101 00011000 00000000
- Логический сдвиг (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, чтобы получить правильный результат.
Примеры.
- Нормализация числа 11110110 11010100, хранящегося в регистре результата AR (АЛУ), с одинарной точностью. SE = EXP AR (HI); {в SE устанавливается –3} SR = NORM AR (HI) {SR = 10110110 10100000 00000000 00000000} Так как использовался модификатор HI, результат помещен в регистр SR1.
- Нормализации с двойной точностью числа, хранящегося в регистре результата 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}
- Нормализации числа с двойной точностью, хранящегося в регистре результата 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}
- Нормализация числа 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 для этого случая.
Девочки встречаются с приятными джентльменами, реальные проститутки в Новосибирске, для сладострастных встреч в уютной обстановке. Незамедлительно дерзайте новые просторы с азиаткой, темнокожей или дамой славянской национальности. Сексуальные реальные проститутки в Новосибирске, горячие и прелестные, они такие заботливые и раскрепощённые, что у тебя будет сегодня классный секс. Не упусти свой шанс.
Здравствуйте, уважаемые.
Понравился материал про Процессор и АЛУ.
Буду благодарен, если сообщите, источник, т.е. имя автора и название книги.
Спасибо.