Примечание. Обычно команду CMP
используют перед командами условного перехода,
условной пересылки данных или условной установки байтов, которые позволяют
применить результат сравнения, не изучая детальное значение каждого флага.
Например, команда JE
выполняет переход,
если операнды команды CMP
были равны. На
самом деле, команда JE
—
лишь другая мнемоника команды JZ
, которая
выполняет переход, если установлен флаг нуля. А флаг нуля устанавливается при
вычитании тогда и только тогда, когда уменьшаемое и вычитаемое равны.
Команда CMP
применяется
также перед любыми другими командами, чувствительными к флагам состояния.
В то же время, условные команды часто используются не после CMP
или TEST
, а
после других команд, устанавливающих флаги состояния. Например, самая короткая
команда для проверки равенства AX единице есть
DEC EAX
Она занимает один байт, а не четыре, как команда
CMP EAX, 1
Выполнение обеих команд занимает один такт на процессорах семейства P6. Единственный недостаток первого варианта состоит в том, что он меняет исследуемое число.
CMPXCHG операнд1, операнд2 сравнить и обменять 80486
Сравнивает значение регистра AL, AX или EAX соответственно размеру первого операнда со значением первого операнда. Если они равны, содержимое второго операнда копируется в первый. В противном случае содержимое первого операнда копируется в аккумулятор.
Флаги устанавливаются, как после команды CMP
.
Первым операндом может быть
— регистр общего назначения;
— память.
Вторым операндом может быть регистр общего назначения.
CMPXCHG8B операнд сравнить и обменять 8 байт P5
Сравнивает содержимое регистров EDX:EAX как 64-разрядного числа с операндом. Если они равны, в EDX:EAX копируется содержимое регистров ECX:EBX, иначе — копируется содержимое операнда.
Операндом может быть память.
DAA BCD-коррекция после сложения 8086
DAS BCD-коррекция после вычитания 8086
AAA ASCII-коррекция после сложения 8086
AAS ASCII-коррекция после вычитания 8086
AAM ASCII-коррекция после умножения 8086
AAD ASCII-коррекция перед делением 8086
Результат всех логических операций с двумя операндами помещается в первый из них.
AND приёмник, источник побитовое И 8086
Приёмником может быть:
— регистр общего назначения;
— память.
Источником может быть:
— непосредственный операнд;
— регистр общего назначения;
— память.
Флаги:
AF — не определён;
CF, OF — сброшены;
PF, SF, ZF — в соответствии с результатом операции.
OR приёмник, источник побитовое ИЛИ 8086
Аналогично AND
.
XOR приёмник, источник побитовое исключающее ИЛИ 8086
Аналогично AND
.
NOT операнд побитовая инверсия 8086
Флаги не изменяются.
TEST операнд1, операнд2 логическое сравнение 8086
Выполняет операцию И над операндами не сохраняя результат.
Правила для операндов и состояние флагов — такие же, как в
команде AND
.
Примечание. TEST
так же, как CMP
,
используется, в основном, перед условными командами.
Для процессоров 80186 и старше во всех командах сдвига счётчиком может быть непосредственный операнд или регистр CL, из которого процессор учитывает только младшие 5 бит, дающие значения от 0 до 31.
Для процессоров 8088 и 8086 счётчиком может быть непосредственный операнд 1 или регистр CL, причём эти процессоры учитывают все биты регистра CL, несмотря на возможную неэффективность операции.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.