Префикс

Структура команд

Указатель команд IP

Это 16-битный регистр -счетчик, вычисляющий адрес следующей команды (в кодовом сегменте) по числу байт в текущей команде.

Регистр состояния (флагов) FLAGS

Это 16-разрядный регистр, в котором сгруппированы управляющие сигналы режимов работы основных систем процессора и флаги кодов условий для условных команд передач управления.

На языке ассемблера команды содержат символьный код операции и один или два адреса. Команды могут быть одноадресными или двухадресными. Первый адрес в команде – адрес приемника, второй – источника. Оба адреса могут быть адресами РОНов, адресом оперативной памяти может быть только один.

Исключением являются:

· команды обработки строк (адреса приемника и источника задаются парами регистров – сегментный регистр:индексный регистр)

· команды работы со стеком, которые перемещают данные из памяти в стек, который также находится в памяти.

Адрес оперативной памяти может задаваться прямым адресом (offset) или компонентами (D, X, disp).

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

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

Команда может иметь :

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

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

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

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

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

 

0, 1 или 2 байта 1 байт 0 или 1 байт 0,1 или 2 байта 0,1 или 2 байта
префикс код операции постбайт байты смещения непосредственный операнд
 

 

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

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

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

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

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

Код операции

Это единственный из обязательных элементов команды (1 байт), задающий операцию. Возможны операции, заданные одним кодом операции. Это одноадресные команды, операнд для которых задается по умолчанию. Поле кода операции может содержать собственно код операции и от одного до 3 специальных битов:

· w – размер операнда (7-й бит), при w = 0 размер операнда – байт, при w = 1 размер операнда – слово.

· d– направление передачи результата для двухместной команды (6-й бит).

при d = 1 – адресом приемника является РОН, заданный полем reg постбайта,

при d = 0 – адресом приемника является адрес памяти;

В одноместной команде используется только источник и 6-й бит байта кода операции (s=1) определяет автоматическое расширение байта данных до размера слова.