Организация ЭВМ и систем

Общий формат команд


Обобщенный вид формата команды показан на рис. 2.10. Он допускает наличие следующих полей: кода операции (1 или 2 байта); байтов адресации (О, 1 или 2 байта); байтов смещения (0, 1,2 или 4 байта); байтов непосредст­венных данных — операндов (0,1,2 или 4 байта).



КОП

Байты адресации

Смещение

Операнд

MODR/M

SIB

1 или 2 байта

0 или 1 байт

0 или 1 байт

0,1,2 или 4 байта

0,1,2 или 4 байта

Рис. 2.10. Общий формат команд

Команды содержат от 1 до 11 байт. Проведенные оценки показывают, что в среднем длина команды составляет 4 — 5 байт.

. Рассмотрим назначение основных полей кода команды (рис.2.10). Код операции (КОП) определяет тип выполняемой операции, а также в некоторых командах в первом байте может содержаться бит W, задающий разрядность операндов:

W=0 — операция с байтами;

W = 1 — операция со словами (16 или 32 разряда).

В ряде команд первый байт КОП содержит поля reg или sreg, опреде­ляющие адрес используемых регистров. Трехбитовое поле reg задает выби­раемый регистр в соответствии с разрядностью обрабатываемых операндов. Поле sreg (двух или трехбитовое) определяет адрес сегментных регистров.

Байт адресации MOD R/M содержит три поля (рис. 2.11). Поля: MOD и R/M задают адрес одного из операндов, который может храниться в регистре или ячейке памяти. Кодировка этих полей определяет выбираемый способ адресации.

Рис. 2.11. Форматы байтов MOD R/M и SIB

В одноадресных командах поле REG/КОП содержит дополнительные биты кода операции. В двухадресных командах поле REG содержит адрес ре­гистра, в котором хранится второй из операндов. Тип команды (одно- или двухадресная) определяется первым битом КОП. Поле MOD указывает, ка­кой разрядности смещение используется для формирования адреса. Если оно имеет значение 00 (при некоторых значениях R/M) или 01, 10, то использует­ся 8-, 16- или 32-разрядное смещение. Это смещение задается соответствую­щими байтами в коде команды, которые располагаются после байтов адреса­ции.

Для реализации некоторых способов относительной адресации исполь­зуется байт SIB. Он содержит 3-битовые поля INDEX и BASE, определяю­щие выбор регистров, используемых в качестве индексного и базового реги­стров, и поле SS, задающее масштабный коэффициент для модификации зна­чения индекса.

При выполнении операций с непосредственной адресацией один из опе­рандов задается в последних байтах команды (рис. 2.10). В этом случае КОП ряда команд содержит бит S, определяющий способ использования непосред­ственно задаваемых данных.



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