logo

Главная Система команд x86 Базовая система команд CPU LDS

Система команд x86

Программирование - Архитектура и система команд микропроцессоров 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

LDS

Загрузить полный указатель в DS

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

OF

DF

IF

TF

SF

ZF

AF

PF

CF

 

 

 

 

 

 

 

 

 

 

Код

Команда

Описание

Проц.

Пример

C5 /r

LDS r16,m16:16

Загрузить DS:r16 дальним указателем из памяти

8086

lds ax,wordX

C5 /r

LDS r32,m16:32

Загрузить DS:r32 дальним указателем из памяти

Intel386

lds eax,dwordZ

0F B2 /r

LSS r16,m16:16

Загрузить SS:r16 дальним указателем из памяти

Intel386

lss di,vector

0F B2 /r

LSS r32,m16:32

Загрузить SS:r32 дальним указателем из памяти

Intel386

lss esi,dwordBag

C4 /r

LES r16,m16:16

Загрузить ES:r16 дальним указателем из памяти

8086

les ax,wordX

C4 /r

LES r32,m16:32

Загрузить ES:r32 дальним указателем из памяти

Intel386

les eax,dwordZ

0F B4 /r

LFS r16,m16:16

Загрузить FS:r16 дальним указателем из памяти

Intel386

lfs ax,wordX

0F B4 /r

LFS r32,m16:32

Загрузить FS:r32 дальним указателем из памяти

Intel386

lfs eax,dwordZ

0F B5 /r

LGS r16,m16:16

Загрузить GS:r16 дальним указателем из памяти

Intel386

lgs ax,wordX

0F B5 /r

LGS r32,m16:32

Загрузить GS:r32 дальним указателем из памяти

Intel386

lgs eax,dwordZ

Описание:

Команды LGS, LSS, LDS, LES и LFS считывают из памяти полный указатель, состоящий из селектора и смещения, и сохраняют его в выбранной паре сегментный регистр:регистр. Полный указатель содержит 16-битный селектор, который загружается в один из сегментных регистров SS, DS, ES, FS или GS, а также смещение, которое загружается в регистр, задаваемый первым операндом команды. Используется 32-битное смещение, если атрибут размера операнда равен 32 бита, или 16-битное смещение, если атрибут размера операнда равен 16 бит.

При загрузке селектора в сегментный регистр соответствующий дескриптор также загружается в скрытую часть этого сегментного регистра.

Нулевой селектор (значения 0000, … 0003) может быть загружен в DS, ES, FS или GS, не вызывая особой ситуации защиты. Любая последующая попытка обращения к памяти с использованием нулевого селектора вызывает исключение #GP(0). Никакого обращения в сегмент не происходит.

Операция:

IF Защищенный режим (* PE = 1, VM = 0 *)

THEN

  IF Загружается SS

  THEN

     IF Загружаемый селектор нулевой THEN #GP(0); FI;

     Проверка загружаемого селектора и соответствующего дескриптора в таблице GDT или LDT;

        Индекс селектора должен попадать в пределы таблицы дескрипторов, иначе #GP(Селектор);

        Поле RPL селектора должно быть равно CPL, иначе #GP(Селектор);

        Поле DPL байта AR должно быть равно CPL, иначе #GP(Селектор);

        Байт AR дескриптора должен задавать сегмент данных доступный для записи, иначе #GP(Селектор);

        Сегмент должен быть помечен, как присутствующий, иначе #SS(Селектор);

     SS = SegmentSelector(SRC);

     SS = SegmentDescriptor([SRC]);

  ELSE IF Загружается DS, ES, FS, or GS не нулевым селектором THEN

     Проверка загружаемого селектора и соответствующего дескриптора в таблице GDT или LDT;

        Индекс селектора должен попадать в пределы таблицы дескрипторов, иначе #GP(Селектор);

        Байт AR дескриптора должен задавать сегмент данных или доступный для чтения кодовый сегмент, иначе #GP(Селектор);

        Для дескриптора сегмента данных и несогласованного кодового сегмента RPL селектора и DPL дескриптора должны быть больше CPL, иначе #GP(Селектор);

        Сегмент должен быть помечен, как присутствующий, иначе #NP(Селектор);

     SegmentRegister = SegmentSelector(SRC) AND RPL;

     SegmentRegister = SegmentDescriptor([SRC]);

  ELSE IF Загружается DS, ES, FS, or GS нулевым селектором THEN

     SegmentRegister = NullSelector;

     SegmentRegister(DescriptorValidBit) = 0;

  FI;

FI;

IF (Режим реальной адресации или режим V86)

THEN

  SegmentRegister = SegmentSelector(SRC);

FI;

DEST = Offset(SRC);

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

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

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

#GP, если любая часть операнда находится вне пространства эффективных адресов в сегментах CS, DS, ES, FS или GS.
#SS, если любая часть операнда находится вне пространства эффективных адресов в сегменте SS.
#UD, если второй операнд не является операндом в памяти.

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

Такие же, как и в режиме реальной адресации.
#PF(Код ошибки) при страничной ошибке.
#AC(0) при невыровненной ссылке в память.


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




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

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

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