logo

Система команд x86
A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

LAR

Загрузить байт прав доступа

Влияние команды на флаги и форматы команды:

OF

DF

IF

TF

SF

ZF

AF

PF

CF

 

 

 

 

 

*

 

 

 

 

Код

Команда

Описание

Проц.

Пример

0F 02 /r

LAR r16,r/m16

r16 = G(L)DT(r/m16).AR AND FF00h

Intel286

lar ax,dx

0F 02 /r

LAR r32,r/m32

r32 = G(L)DT(r/m32).AR AND 00FxFF00h

Intel386

lar eax,edx

Операция:

IF SRC(Offset) > Предел таблицы дескрипторов THEN ZF = 0; FI;

Загрузить дескриптор сегмента;

IF (Загруженный дескриптор не определяет согласованный кодовый сегмент) AND ((CPL > DPL) OR (RPL > DPL)) OR (Загруженный дескриптор не является корректным для данной команды)

  THEN

     ZF = 0

  ELSE

     ZF = 1;

     IF OperandSize = 32

        THEN

           DEST = [SRC] AND 00FxFF00H;

        ELSE (*OperandSize = 16*)

           DEST = [SRC] AND FF00H;

     FI;

FI;

Описание:

Команда LAR сохраняет в операнде-назначении частично замаскированную форму второго двойного слова дескриптора, который задается селектором в операнде-источнике команды, если дескриптор видим при текущем уровне привилегий (измененном при помощи поля RPL селектора), и если дескриптор имеет допустимый тип.

При 32-битном размере операнда 32-битный регистр-назначение загружается старшим двойным словом дескриптора, маскированным 00FxFF00h и устанавливается флаг ZF (x обозначает, что четыре бита, соответствующие четырем старшим битам предела, не определены в значении, загружаемом командой LAR).

При 16-битном размере операнда 16-битный регистр-назначение загружается младшими 16 битами старшего двойного слова дескриптора, маскированными FF00h и устанавливается флаг ZF.

Если задаваемый селектором из операнда-источника дескриптор невидим при текущем уровне привилегий или имеет недопустимый для данной команды тип, то флаг ZF сбрасывается. Все дескрипторы сегментов кода и данных допустимы для команды LAR. Для этой команды таже допустимы и некоторые специальные дескрипторы (см. таблицу 6.62.).

Команда LAR может исполняться только в защищенном режиме, попытка ее использования в режиме реальной адресации или режиме V86 приводит к генерации особой ситуации #UD.

 

Таблица 6.62. Допустимость специальных дескрипторов для команды LAR

 

Тип (Type)

Имя

Допустим/ недопустим

0000

Зарезервировано

недопустим

0001

Свободный 16-битный TSS

допустим

0010

Локальная таблица дескрипторов (LDT)

допустим

0011

Занятый 16-битный TSS

допустим

0100

16-битный шлюз вызова

допустим

0101

Шлюз задачи

допустим

0110

16-битный шлюз прерывания

недопустим

0111

16-битный шлюз ловушки

недопустим

1000

Зарезервировано

недопустим

1001

Свободный 32-битный TSS

допустим

1010

Зарезервировано

недопустим

1011

Занятый 32-битный TSS

допустим

1100

32-битный шлюз вызова

допустим

1101

Зарезервировано

недопустим

1110

32-битный шлюз прерывания

недопустим

1111

32-битный шлюз ловушки

недопустим

Особые ситуации защищенного режима:

#GP(0), если используется некорректный эффективный адрес операнда в памяти в сегментах CS, DS, ES, FS, GS или нулевой селектор.
#SS(0) при использовании некорректного эффективного адреса в сегменте SS.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память при текущем уровне привилегий равном 3.

Особые ситуации режима реальной адресации:

#UD при попытке использовать команду.

Особые ситуации режима V86:

#UD при попытке использовать команду.


Входит в группу команд: Базовая система команд CPU



Все права защищены © 1997-2011 Перепечатка возможна только по согласованию с владельцем авторских прав. admin@club155.ru

Яндекс.Метрика               Сервер радиолюбителей России - схемы, документация,

 соревнования, дипломы, программы, форумы и многое другое!   схемы новости электроники