December 12 2017 08:14:56
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
Установка признаков при выполнении команд
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ

В одноадресных командах MUL и IMUL один из сомножителей и произведение размещаются в аккумуляторе: AL, АХ или ЕАХ в соответствии с разрядностью операндов. Так как разрядность произведения может вдвое превышать разрядность операндов, то для его размещения производится расширение аккумулятора AL ® АХ, АХ ® DX:AX, ЕАХ ® EDX:EAX. При этом 16-разрядное произведение 8-разрядных операндов заносится в AL (младшие разряды), АН (старшие разряды), 32-разрядное произведение - в АХ (младшие разряды), DX (старшие разряды), 64-разрядное произведение - в ЕАХ (младшие разряды), EDX (старшие разряды).

Таблица 2.17 Установка признаков при выполнении команд арифметических, логических

операций и сдвигов

Команды Признаки
OF SF ZF AF DF CF
ADD,ADC,SUB,SBB,CMP,NEG,XADD,CMPXCHG + + + + + +
INC, DEC + + + + + -
MUL, IMUL + н н н н +
DIV, IDIV н н н н н н
DAA, DAS н + + + + +
AAA, AAS н н н + н +
AAM, AAD н + + н + н
CMPXCHG8B - - + - - -
AND, OR, XOR, TEST 0 + + н + 0
SAL, SAR, SHL, SHR (1 разряд) + + + н + +
SAL, SAR, SHL, SHR (n разрядов), SHLD, SHRD н + + н + +
ROL, ROR, RCL, RCR (1 разряд) + - - - - +
ROL, ROR, RCL, RCR (n разрядов) н - - - - +
Примечание. + ‑ установка признака по результату операции; - ‑ сохранение ранее установленного признака; н ‑ неопределенное значение признака; 0 ‑ установка нулевого значения признака.

При двух- и трехадресной формах команды IMUL операндами служат 16- или 32-разрядные числа. Один операнд выбирается из регистра, в качестве второго операнда при двухадресной форме служит либо содержимое регистра или адресуемой ячейки памяти, либо непосредственный операнд im. При трехадресной форме содержимое регистра или ячейки памяти является вторым сомножителем, а непосредственный операнд-третьим. Если в качестве непосредственного операнда используется 8-разрядное число im8, то оно преобразуется до заданной разрядности (16 или 32) путем расширения знака. Произведение размещается в 16- или 32-разрядном регистре, указанном в поле операнда. Так как при этом старшие 16-го или 32-го разряда произведения теряются, то после умножения следует проверять значение признака переполнения OF.

При выполнении команд MUL, IMUL признаки OF, CF устанавливаются в единицу, если разрядность результата превышает разрядность регистров, используемых для его размещения. Команды MUL, IMUL различаются условиями установки этих признаков. При выполнении беззнакового умножения командой MUL устанавливаются значения OF = CF = 1, если старшая половина произведения не равна нулю, OF = CF = 0, если все разряды старшей половины равны нулю. При выполнении знакового умножения командой IMUL устанавливаются значения OF = CF = 1, если старшая половина произведения не является расширением знака младшей половины, OF = CF = 0, если во всех разрядах старшей половины повторяются значения старшего бита (знака) младшей половины.

Команды деления DIV и IDIV имеют только одноадресную форму, причем разрядность делимого, которое размещается в аккумуляторе с расширением, должна вдвое превышать разрядность делителя (8,16 или 32 разряда). Реализуемое при этом размещение делимого, результата и остатка указано в табл. 2.16. Знак остатка при выполнении команды IDIV устанавливается равным знаку делимого. Дробное частное округляется до целого значения отбрасыванием его дробной части. Если делитель равен нулю или разрядность частного превышает разрядность аккумулятора (AL, АХ или ЕАХ), то выполняется прерывание типа #DE (ошибка деления).

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.07 секунд 2,295,774 уникальных посетителей