Справочник по языку Ассемблера IBM PC

       

Для описания команд приняты обозначения:


Для описания состояния флагов после выполнения некоторой команды будем использовать выборку из таблицы, отражающей структуру регистра флагов 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.



Содержание раздела