October 18 2017 12:24:28
Навигация
Авторизация
Логин

Пароль



Вы не зарегистрированы?
Нажмите здесь для регистрации .

Забыли пароль?
Запросите новый здесь.
Команда BSWAP
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ

Выполнение команд IN, OUT в защищенном режиме зависит от значений уровня привилегии текущей программы CPL и уровня привилегии ввода-вывода IOPL, задаваемого соответствующим полем регистра EFLAGS. При CPL < IOPL команда выполняется. При CPL > IOPL эта возможность обращения к адресованному порту проверяется по битовой карте ввода-вывода (БКВВ), содержащейся в сегменте состояния выполняемой задачи TSS. Если БКВВ разрешает обращение к данному порту, то команда IN, OUT выполняется, если не разрешает, то реализуется прерывание типа #GP «нарушение защиты». При работе процессора в режиме виртуального 8086 проверка допустимости обращения к заданному порту производится с помощью БКВВ при любых значениях CPL, IOPL.

Команды MOVSX, MOVZX осуществляют пересылку в регистр общего назначения содержимого другого регистра или ячейки памяти с одновременным расширением разрядности операнда. При этом производится либо преобразование байта в слово (реальный режим и режим виртуального 8086) или двойное слово (защищенный режим), либо слово преобразуется в двойное слово (защищенный режим). При выполнении команды MOVSX расширение производится путем заполнения старшего байта или слова значением знака (старшего разряда), при выполнении команды MOVZX - заполнением нулями.

Команда BSWAP осуществляет перестановку байтов в заданном 32-разрядном регистре. При этом попарно меняются местами старший и младший байты (байт 3 и байт 0) и промежуточные байты (байт 1 и байт 2), т. е. порядок следования байтов меняется справа налево. Численные значения байтов сохраняются.

Команды XLAT, XLATB заменяют содержимое младшего байта аккумулятора AL на байт, хранящийся в 256-байтовой таблице, начальный (базовый) адрес которой содержится в регистре ЕВХ (или ВХ в реальном режиме или режиме виртуального 8086). При этом содержимое AL (беззнаковое число) используется как относительный адрес (индекс) выбираемого в таблице байта. Выполнение команд XLAT, XLATB иллюстрируется на рис. 2.13. Эти команды служат для табличного преобразования одного кода в другой. Отметим, что команда XLATB всегда реализует обращение к таблице, размещенной в сегменте данных DS. Команда XLAT позволяет обращаться к таблицам в различных сегментах данных путем задания соответствующего адреса операнда. Например, обращение к таблице в сегменте ES реализуется с помощью команды XLAT ES:[EBX].

При выполнении команд LEA, LDS, LES, LFS, LGS, LSS операнд-источник <src> всегда размещается в памяти, операнд-приемник <dst> - в регистре общего назначения.

Команда LEA производит вычисление эффективного адреса ЕА операнда-источника и загружает его в указанный регистр.

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

img006

Комментарии
Нет комментариев.
Добавить комментарий
Пожалуйста, залогиньтесь для добавления комментария.
Рейтинги
Рейтинг доступен только для пользователей.

Пожалуйста, авторизуйтесьили зарегистрируйтесь для голосования.

Нет данных для оценки.

Время загрузки: 0.02 секунд 2,255,336 уникальных посетителей