Описание процессора i8086 для программиста

Машинные инструкции


Описанию каждой инструкции предшествует сводка возможных форматов этой инструкции и соответствующих кодов команд. При этом используются следующие обозначения:

– NN+rb – код операции состоит из фиксированного кода NN (шестнадцатеричного), к которому прибавлен номер 8-разрядного регистра общего назначения;

– NN+rw – код операции состоит из фиксированного кода NN (шестнадцатеричного), к которому прибавлен номер 16-разрядного регистра общего назначения;

– /r – байт ModRegR/M, в котором поле Reg определяет номер регистра;

– /rцифра – байт ModRegR/M, в котором поле Reg имеет значение, указанное цифрой (например, /r2 означает, что поле Reg содержит двоичную комбинацию 010);

– cb – 8-разрядное отклонение;

– cw – 16-разрядное отклонение;

– cd – 32-разрядный абсолютный адрес дальнего перехода;

– ib – 8-разрядный непосредственный операнд;

– iw – 16-разрядный непосредственный операнд;

– imm8 – 8-разрядное непосредственное значение (константа);

– imm16 – 16-разрядное непосредственное значение (константа);

– ow – 16-разрядное смещение операнда в сегменте данных;

– r/m8 – 8-разрядный регистр общего назначения или байт памяти, определяемый полями Mod и R/M байта ModRegR/M. В коде команды может присутствовать 8- или 16-разрядное отклонение;

– r/m16 – 16-разрядный регистр общего назначения или слово памяти, определяемое полями Mod и R/M байта ModRegR/M. Операнд либо является арифметико-логическим, используемым в команде обработки данных, либо 16-разрядным смещением в команде абсолютного ближнего перехода. В коде команды может присутствовать 8- или 16-разрядное смещение;

– m8 – байт данных, заданный смещением (поле ow кода команды);

– m16 – слово данных, заданное смещением (поле ow кода команды);

– m16:16 – двойное слово памяти, содержащее селектор сегмента и смещение, используемые в качестве абсолютного адреса дальнего перехода. Местоположение поля в памяти определяется полями Mod и R/M байта ModRegR/M;

– r8 – 8-разрядный регистр общего назначения, определяемый полем Reg байта ModRegR/M;

– r16 – 16-разрядный регистр общего назначения, определяемый полем Reg байта ModRegR/M;

– Sreg – сегментный регистр, определяемый полем Reg байта ModRegR/M;

– rel8 – 8-разрядный относительный адрес ближнего перехода (8-разрядное отклонение);

– rel16 – 16-разрядный относительный адрес ближнего перехода (16-разрядное отклонение);

– ptr16:16 – абсолютный адрес дальнего перехода (16-разрядные селектор сегмента и смещение).

В сводке кодов команд указываются только обязательно присутствующие компоненты. Например, в арифметико-логических операциях, где один из операндов задаётся с помощью полей Mod и R/M байта ModRegR/M, не указывается поле отклонения, которое может присутствовать или отсутствовать в зависимости от содержимого байта ModRegR/M.



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