Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Учебник по Микропроцессорам_МИА.doc
Скачиваний:
1
Добавлен:
01.07.2025
Размер:
1.67 Mб
Скачать

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

Информация, закодированная в команде, включает код операции, тип операндов для данной операции и адреса размещения этих операндов [33, 34]. Если операнд находится в памяти, то в команде содержится явное или неявное указание на сегмент, содержащий указанный операнд.

Общий формат команд процессора приведен на рис. 2.4, где обозначены: Base – база, mod – режим, reg/m – регистр/память, Index – индекс, Scale – масштаб.

Команды состоят из отдельных полей и имеют различные форматы. Из всех описанных ниже полей команд только код операции обязательно присутствует в команде. Остальные поля могут отсутствовать, что определяется операцией, местом хранения операндов, их типом [35, 36].

Префиксы. Один или более байтов, предшествующих команде и модифицирующих операцию, выполняемую командой. Следующие префиксы могут использоваться в прикладных программах [32-34]:

З амена сегмента, которая указывает в явной форме на используемый сегментный регистр выполняемый командой вместо сегментного регистра, используемого по умолчанию.

Размер адреса, который определяет размерность адреса в 16 бит или 32 бита. Любая из этих разрядностей может быть выбрана по умолчанию, префикс выбирает определенную разрядность.

Размер операнда, который определяет размерность данных, равную 16 битам или 32 битам. Любая из этих разрядностей может быть выбрана по умолчанию, префикс выбирает определенную разрядность данных.

Повторение, которое используется с командами обработки строк. Обеспечивает обработку каждого элемента строки одной последовательностью команд.

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

Спецификатор регистра. Команда может определять один или два регистра для хранения операндов (байты mod/reg и sib).

Спецификатор режима адресации. Он определяет место хранения операнда в регистре или памяти. Если операнд хранится в памяти, то спецификатор определяет необходимось использования смещения, базового регистра, индексного регистра и масштабирования.

SIB (ss, Index, Base) байт. Когда спецификатор режима адресации указывает на использование индексного регистра для вычисления адреса операнда, байт SIB включается в команду для определения базового регистра, индексного регистра и масштабного коэффициента, равного 1, 2,4 или 8.

Непосредственный операнд. Непосредственные операнды могут быть 8-, 16- или 32-битными. В тех случаях, когда 8-битный непосредственный операнд используется в команде вместе с 16- или 32-битным операндом, процессор расширяет его с учетом знака. Таким же образом 16-битный операнд преобразуется в 32-битный.

Смещение. Когда спецификатор режима адресации указывает, что для операнда будет использоваться смещение, оно включается в команду. Смещение представляет собой 8-, 16- или 32-битовое целое число со знаком. Восьмибитовая форма используется в тех случаях, когда значение смещения достаточно мало. Процессор расширяет 8-битовое смещение до 16 или 32 бит путем знакового расширения