Машинная кодировка команд IA – 16

МП IA-16 используют команды переменного формата от 1 до 7 байт. Кодировка команд производилась с учетом частоты использования команды в типовых программах.

Команда может иметь (рис. 2.5.):

· возможно, префикс (1 или 2 однобайтных префиксов),

· код адресации (1 байт),

· возможно, постбайт (1байт),

· возможно, байты смещения – disp (1 или 2 байта),

· возможно, байты непосредственного операнда (1 или 2 байта).

0, 1 или 2 байта 1 байт 0,1 байт 0,1 или 2 байта 0,1 или 2 байта
префикс код операции постбайт байты смещения непосредственный операнд
Рис.2.5. Структура команд МП IA -16.

Элементы команды:

Префикс.

Это необязательный байт, модифицирующий процедуру выполнения команды.

МП IA – 16 предусматривает использование двух префиксов:

· повторения,

· замены сегмента памяти, используемого по умолчанию (только для данной команды).

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

1. подсчетом заданного числа повторения (в регистре cx),

2. кодом условия результата очередного повторения операции в регистре флагов.

Префикс замены сегмента памяти.

В МП IA-16 предусмотрены 4 сегментных регистра. Использование любого из них может быть задано по умолчанию или явно, кроме сегмента команд.

По умолчанию используются сегменты:

· CS – для выборки команд по IP (счетчику команд),

· DS – для выборки данных, адреса которых используют базу – bx,

· SS – для выборки данных, адреса которых используют базу – bp,

· ES – в командах обработки строк.

Изменения использования сегмента по умолчанию можно указав в команде явно используемый сегмент:

1. mov ax, [CS:bх +356] база указывает на использование сегмента данных DS, но запись CS: явно указывает на работу с данными, помещенными в кодовый сегмент.

2. mov ax, ma [bх +356] в этом варианте используется константа, зарезервированная псевдооператорами ассемблера DB (определить байт) или DW (определить слово):

Cegment CS задание сегмента,

DW ma 45 зарезервировать двухбайтную ячейку для данных ma с начальным значением 45.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: