Справочник по языку Ассемблера IBM PC


Структура машинной команды


Машинная команда представляет собой закодированное по определенным правилам указание микропроцессору на выполнение некоторой операции или действия. Каждая команда содержит элементы, определяющие:

  • что делать? (ответ на этот вопрос дает элемент команды, называемый кодом операции (КОП));

  • объекты, над которыми нужно что-то делать (эти элементы называются операндами);

  • как делать? (эти элементы называются типами операндов — обычно задаются неявно).

Приведенный на рис. 1 формат машинной команды является самым общим. Максимальная длина машинной команды — 15 байт. Реальная команда может содержать гораздо меньшее количество полей, вплоть до одного — только КОП.

Рис. 1. Формат машинной команды

Опишем назначения полей машинной команды.

  • Префиксы. Необязательные элементы машинной команды, каждый из которых состоит из одного байта или может отсутствовать. В памяти префиксы предшествуют команде. Назначение префиксов — модифицировать операцию, выполняемую командой. Прикладная программа может использовать следующие типы префиксов:

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

  • 2eh — замена сегмента cs;

  • 36h — замена сегмента ss;

  • 3eh — замена сегмента ds;

  • 26h — замена сегмента es;

  • 64h — замена сегмента fs;

  • 65h — замена сегмента gs.

  • Префикс разрядности адреса уточняет разрядность адреса (32 или 16-разрядный).


  • Каждой команде, в которой используется адресный операнд, ставится в соответствие разрядность адреса этого операнда. Этот адрес может иметь разрядность 16 или 32 бит. Если разрядность адреса для данной команды 16 бит, это означает, что команда содержит 16-разрядное смещение (см. ), оно соответствует 16-разрядному смещению адресного операнда относительно начала некоторого сегмента. В контексте это смещение называется эффективный адрес. Если разрядность адреса 32 бит, это означает, что команда содержит 32-разрядное смещение (см. ), оно соответствует 32-разрядному смещению адресного операнда относительно начала сегмента и по его значению формируется 32-битное смещение в сегменте. С помощью префикса разрядности адреса можно изменить действующее по умолчанию значение разрядности адреса. Это изменение будет касаться только той команды, которой предшествует префикс. 




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



    Книжный магазин