logo search
Методичка

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

Обобщённый формат машинной команды МП IA-32 представлен на рисунке 2.3, а описание её полей приведено в таблице 2.5 и 2.6. Значение в поле кода операции (opcode) определяет общий формат команды, то есть какие поля расположены следом, а также размер команды. При декодировании этого поля дешифратор команд определяет операцию, количество и тип операндов. Все остальные байты не являются обязательными. Поле Mod R/M (mode register/memory) определяет режим адресации и операнды команды. Поля immed-low и immed-high используются тогда, когда в команде присутствует непосредственно заданный операнд (константа). Поля disp-low и disp-high задают величину смещения, которая добавляется к базовому и индексному регистрам при использовании сложных режимов адресации типа [BX+SI+2]. Только некоторые команды содержат все перечисленные выше поля. Большая же часть команд имеет длину всего 2-3 байта.

Таблица 2.5. Значение поля mod команд процессоров Intel

Значение mod

Описание

00

Байты смещения disp‑low и disp‑high отсутствуют, кроме случая, когда поле r/m = 110

01

Присутствует один байт смещения disp‑low, значение которого расширяется со знаком до 16 бит. Поле disp‑highотсутствует

10

Присутствуют оба байта смещения disp‑low и disp‑high.

11

В поле r/m закодирован один из восьми РОНов

Таблица 2.6. Значение поля r/m команд процессоров Intel

Значение r/m

Операнд

000

[BX+SI] + смещение

001

[BX+DI] + смещение

010

[BP+SI] + смещение

011

[BP+DI] + смещение

100

SI + смещение

101

DI + смещение

110

[BP] + смещение, либо только смещение, если поле mod=00

111

[BP] + смещение