Система команд x86 |
|
Программирование - Архитектура и система команд микропроцессоров x86 |
LLDT
Влияние команды на флаги и форматы команды:
|
|
|
|
|
|
|
|
|
0F 00 /2 |
LLDT r/m16 |
Загрузить селектор сегмента из r/m16 в регистр LDTR |
Intel286 |
lldt [di] |
Описание:
Команда LLDT загружает регистр локальной таблицы дескрипторов LDTR. Двухбайтный операнд команды LLDT может быть операндом в памяти или регистром и должен содержать селектор дескриптора в глобальной таблице дескрипторов GDT. Соответствующий дескриптор в GDT должен быть дескриптором локальной таблицы дескрипторов. Если так оно и есть, то LDTR загружается заданным селектором. Сегментные регистры DS, ES, SS, FS, GS и CS не изменяются. Поле LDT в сегменте состояния задачи (TSS) не изменяется.
Операнд-селектор может быть нулем, если это так, то LDTR помечается как недопустимый. Все дескрипторные ссылки (исключая ссылки через команды LAR, VERR, VERW или LSL) вызывают ошибку #GP.
Команда LLDT используется в системном программном обеспечении, она не используется в прикладных программах.
Операция:
Проверка загружаемого селектора и соответствующего дескриптора таблице дескрипторов;
Индекс селектора должен попадать в пределы таблицы дескрипторов, иначе #GP(Селектор);
Селектор должен указывать на дескриптор типа LDT, иначе #GP(Селектор);
Сегмент должен быть помечен, как присутствующий, иначе #NP(Селектор);
LDTR.SegmentSelector = SRC;
LDTR.SegmentDescriptor = GDT.SegmentDescriptor; (* Загрузка скрытой части регистра *)
Особые ситуации защищенного режима:
#GP(0), если текущий уровень привилегий не равен 0, также если используется некорректный эффективный адрес операнда в памяти в сегментах CS, DS, ES, FS, GS или нулевой селектор.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#GP(Селектор), если операнд-селектор не указывает на глобальную таблицу дескрипторов, или запись в GDT не является корректным дескриптором локальной таблицы дескрипторов.
#NP(Селектор), если дескриптор LDT не присутствует.
#PF(Код ошибки) при страничной ошибке.
Особые ситуации режима реальной адресации:
#UD, команда LLDT не распознается в реальном режиме.
Особые ситуации режима V86:
#UD, команда LLDT не распознается в реальном режиме.
Замечание:
Атрибут размера операнда не влияет на команду LLDT.
Все права защищены © Алексей Ровдо, 1994-2023. Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru