Каждая команда представляет собой закодированную информацию, содержащую код операции, подлежащей выполнению, тип операндов для данной операции и указание на расположение этих операндов. Если операнд расположен в памяти, в команде может содержаться явное или неявное указание на сегмент, содержащий указанный операнд. Команды состоят из отдельных элементов и могут иметь различные форматы. Точный формат команд приведен в Приложении B, а ниже описываются основные для всех команд элементы. Из всех описанных ниже элементов только один (код операции, Коп) обязательно присутствует в любой команде. Остальные элементы могут отсутствовать, что определяется характером операции, а также местоположением и типом операндов. Ниже описаны элементы команды в том порядке, как они расположены в команде:
Префиксы: один или несколько байтов, предшествующих команде и модифицирующих операцию этой команды. Следующие префиксы могут быть использованы в прикладных программах:
Замена (подавление) сегмента - в явной форме указывает, какой сегментный регистр должна использовать программа. Префикс отменяет действующий по умолчанию выбор сегментного регистра.
Размер адреса - переключает разрядность адреса, определяя образование 32-разрядных или 16-разрядных адресов. Любой из этих размеров может быть выбираемым по умолчанию: данный префикс выбирает альтернативный размер.
Размер операнда - переключает разрядность операндов, устанавливая их 32-разрядными или 16-разрядными. Любой из этих размеров может быть выбираемым по умолчанию: данный префикс выбирает альтернативный размер.
Повторение - используется с командами обработки строк; заставляет команду воздействовать на каждый элемент строки.
Код операции (Коп): описывает операцию, выполняемую командой. Некоторым командам присущи несколько кодов операций, каждый из которых описывает определенный вариант операции.
Описатель регистра: в команде могут быть описаны один или два регистра в качестве операндов. Описатель регистра может присутствовать как в байте кода операции, так и в байте описателя режима адресации.
Описатель режима адресации: этот элемент, если он присутствует, описывает, является ли операнд содержимым регистра или ячейки памяти. Если операнд находится в памяти, описатель режима указывает, надо ли использовать смещение, индексный регистр, регистр базы и масштабирование.
SIB (scale-index-base, масштаб-индакс-база) байт: когда описатель режима адресации указывает на использование индексного регистра для вычисления адреса операнда, SIB байт используется для кодирования в команде базового регистра, индексного регистра и коэффициента масштабирования.
Смещение: Если описатель режима адресации указывает, что при вычислении адреса операнда будет использовано смещение, в состав кода команды включается поле смещения. Смещение представляет собой 8-, 16- или 32-разрядное целое число со знаком. 8-разрядная форма используется в тех случаях, когда значение смещения невелико. Процессор автоматически увеличит 8 -разрядное смещение до 16- или 32-разрядов, путем распространения его знакового разряда.
Непосредственный операнд: Если этот элемент присутствует, он представляет значение операнда команды. Непосрадственные операнды могут быть 8-, 16 или 32-разрядными. В случаях когда 8-разрядный непосредственный операнд используется в команде вместе с 16- или 32-разрядным операндом, процессор автоматически увеличивает размер 8-разрядного операнда путем расширения его знакового разряда. Таким же способом 16-разрядный операнд преобразуется в 32-разрядный.