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


Формат кода команды


Общая структура кодов большинства команд обработки данных микропроцессора 8086 следующая:

-----------¬ ----------¬ ------------¬ ---------------¬ ------------¬

¦ Prefixes ¦ ¦ Op Code ¦ ¦ ModRegR/M ¦ ¦ Displacement ¦ ¦ Immediate ¦

L----------- L---------- L------------ L--------------- L------------

Как видно из приведённого рисунка, код команды в общем случае состоит из пяти частей:

– префиксов (Prefixes) – 0–3 байта;

– кода операции (Op Code) – 1 байт;

– байта ModRegR/M – 1 байт;

– отклонения (Displacement) – 0–2 байта;

– непосредственного операнда (Immediate) – 0–2 байта.

В любой инструкции  присутствует код операции. Все остальные поля кода команды используются при возникновении такой необходимости. Длина кода команды колеблется от 1 до 9 байтов.

Инструкции переходов, использующие относительную адресацию, имеют следующий формат кода команды:

----------¬ ---------------¬

¦ Op Code ¦ ¦ Displacement ¦

L---------- L---------------

Код таких команд состоит из двух полей: однобайтового кода операции и отклонения длиной 1 или 2 байта в зависимости от используемой команды. Отклонение, рассматриваемое как число со знаком, прибавляется к содержимому указателя инструкции IP, который в этот момент указывает на команду, следующую за инструкцией перехода. В результате образуется адрес следующей команды.

Команды, использующие 8-разрядное отклонение, обеспечивают выполнение так называемых коротких переходов, а команды с 16-разрядным отклонением – длинных переходов. В любом случае переход является ближним (внутрисегментным).

Инструкции переходов, использующих прямую адресацию, имеют код команды размером 5 байт следующего формата:

----------¬ ---------¬ ----------¬

¦ Op Code ¦ ¦ Offset ¦ ¦ Segment ¦

L---------- L--------- L----------

Поля смещения (Offset) и селектора сегмента (Segment) занимают по два байта и вместе составляют адрес команды, на которую производится дальний (межсегментный) переход.

Формат инструкций перехода, использующих косвенную адресацию, сводится к общему формату команды обработки данных.


- Начало -  - Назад -  - Вперед -