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

1байт, если необходим
До 4 префиксов по 1 байту каждый
1,2 или 3 байта
1байт, если необходим
1,2 или 4 байта или отсутствует
1,2 или 4 байта или отсутствует
Префикс команды
Код операции
Mod R/M
SIB
Смещение
Непосредственное

Рисунок 6 – Формат команды

Поля Mod R/M и SIB (пост-байт) – определяют тип адресации

7 6
5 3
2 0
Mod
Reg/OpCode
R/M

Рисунок 7 – Формат байта Mod R/M

Поля Mod и R/M – формируют 32 типа адресации: 8 регистровых и 24 типа обращений к памяти

Поле Reg/OpCode – определяет либо один из регистров, либо в нем хранится дополнительные 3 бита кода операции

Поле R/M может определять либо регистр как операнд, либо использоваться в комбинации с полем Mod для определения типа адресации.

Поля SIB используются для формирования линейного адреса.

Рисунок 8 – Схема формирования адреса операнда

Поле Scale (символ S) – 2 бита (7 и 6)

Поле Index (символ I) – 3 бита (5, 4 и 3)

Поле Base (символ B) – 3 бита (2, 1 и 0)

Способы адресации основаны на различных вариациях полей Mod R/M и SIB:

Непосредственная – в команде указывается само значение операнда

Mov ax,0ffffh– где Mov – мнемоника команды перемещения данных

Ax – название регистра-приемника данных

0ffffh – непосредственно значение, записываемое в регистр. Значение всегда начинается с цифры. Для шестнадцатеричных чисел, начинающихся с символа необходимо вначале ставить цифру 0. Символ в конце числа означает систему счисления, в которой представлено число, по умолчанию все числа принимаются десятичными. «h» – 16 с/с, «O» – 8 c/с, «b» – 2 с/с.

Регистровая – в команде указываются имена регистров, являющихся источником и приемником данных. Некоторые команды (умножения и деления) хранят операнды не в одном, а в паре регистров (в результате умножения получается слово двойной длины, а делимое должно быть длиннее делителя в 2 раза), при этом пара регистров разделяется двоеточием: EDX:EAX, где старшие 32 разряда в EDX, а младшие – в EAX.

Mov ax,bx; где AX – регистр-приемник данных, а ВХ – регистр-источник данных


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



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