Для описания команд приняты обозначения:
Для описания состояния флагов после выполнения некоторой команды будем использовать выборку из таблицы, отражающей структуру регистра флагов eflags:
31 | 18 | 17 | 16 | 15 | 14 | 1312 | 11 | 10 | 09 | 08 | 07 | 06 | 05 | 04 | 03 | 02 | 01 | 00 |
0 | 0 | VM | RF | 0 | NT | IOPL | OF | DF | IF | TF | SF | ZF | 0 | AF | 0 | PF | 1 | CF |
В нижней строке этой таблицы приводятся значения флагов после выполнения команды. При этом используются следующие обозначения:
1 — после выполнения команды флаг устанавливается (равен 1);
0 — после выполнения команды флаг сбрасывается (равен 0);
r — значение флага зависит от результата работы команды;
? — после выполнения команды флаг не определен;
пробел — после выполнения команды флаг не изменяется;
Для представления операндов в синтаксических диаграммах используются следующие обозначения:
r8, r16, r32 — операнд в одном из регистров размером байт, слово или двойное слово;
m8, m16, m32, m48 — операнд в памяти размером байт, слово, двойное слово или 48 бит;
i8, i16, i32 — непосредственный операнд размером байт, слово или двойное слово;
a8, a16, a32 — относительный адрес (смещение) в сегменте кода.
На многих диаграммах в целях компактности возможные сочетания операндов показаны в виде следующей конструкции:
Конструируя команду на основе подобной синтаксической диаграммы, вы должны помнить о соответствии типов. В подобной диаграмме допустимы только следующие сочетания: "r8, m8", "r16, m16", "r32, m32". Например, сочетание "r8, m16" недопустимо. Однако есть единичные случаи, когда подобные сочетания возможны; тогда они специально оговариваются.
Описанная в данном приложении система команд в полном объеме поддерживается микропроцессором Pentium. Предыдущие модели микропроцессора могут не поддерживать отдельные команды. Чтобы прояснить этот момент, мы будем указывать в примерах для каждой команды директиву типа .286. Это будет означать, что описываемая команда поддерживается всеми моделями микропроцессора, начиная с i286. Если ничего не указывается, то это означает, что данная команда работает на всех моделях микропроцессоров Intel, начиная с i8086/8088.