Префиксы - модифицирует операцию следующей команды. Префикс операнда –переключает 16 или 32 битные операнды. Префикс размера адреса- переключает формирование 16 или 32 размеры адреса. Код операции - для новых команд 2байт, 1байт- 0Fh адрес новой команды. Значение служебных полей W,D,S см. i8086 (w – размер операнда, d - направление, s – расширение до полного размера). Пост-байт – вместе с байтом SIB определяют метод адресации. Байт SIB-байт масштабируемого индекса служит для представления сложных структур данных и имеет следующий формат: ss-index-BASE . Задает базовый и индексный регистры и значение масштабного множителя.
Префиксы:
Повтор
(0-1)
Размер адреса (0-1)
Регистр операнда
(0-1)
Замена сегмента
(0-1)
КОП
(1-2)
Постбайт
(0-1)
SIB
(0-1)
Cмещение
(0,1,2,4)
Неполный операнд
(0,1,2,4)
Таблица дескрипторов сегментов. Адресация таблиц. Поиск дескриптора в таблицах
GDT – глобальная дескрипторная таблица, содержит системные дескрипторы и дескрипторы сегментов, доступных всем программам. В числе системных хранятся дескрипторы LDT. LDT – локальная дескрипторная таблица, создается для каждой задачи. Регистры GDTR и LDTR адресуют указанные таблицы.
Поиск дескриптора:
GDTR указывает на начало глобальной таблицы в памяти. Это значение, сложенное со значением селектора*8 дает адрес дескриптора сегмента, то есть GDTR+селектор*8=адрес дескриптора.
Базовый адрес сегмента из дескриптора + смещение, заданное в команде дают адрес операнда в памяти.
В случае, если селектор указывает на локальную таблицу – по значению регистра LDTR определяется местонахождение дескриптора LDT в глобальной таблице. Далее по базовому адресу определяется местонахождение таблицы LDT в памяти.
Вариант обращения LDT/GDT определяется битом селектора в сегментном регистре (13бит).