Научная литература
booksshare.net -> Добавить материал -> Физика -> Александров Е.К. -> "Микропроцессорные системы" -> 51

Микропроцессорные системы - Александров Е.К.

Александров Е.К., Грушвицкий Р.И., Купрянов М.С., Мартынов О.Е. Микропроцессорные системы — Спб.: Политехника, 2002. — 935 c.
ISBN 5-7325-0516-4
Скачать (прямая ссылка): mikroprocessorniesistemi2002.djvu
Предыдущая << 1 .. 45 46 47 48 49 50 < 51 > 52 53 54 55 56 57 .. 528 >> Следующая

работе системы применение этих номеров программистами должно быть
исключено.
Выполнение команд 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 позволяет перейти к новому сегменту стека.
Сегмент данных
Рис. 2.13. Выполнение команды преобразования кодов XLAT
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ
2.2.2. КОМАНДЫ АРИФМЕТИЧЕСКИХ ОПЕРАЦИЙ
Команды данной группы приведены в табл. 2.16. При выполнении команд
производится установка признаков OF, SF, ZF, AF, DF, CF в регистре EFLAGS
в соответствии с табл. 2.17.
Таблица 2.16
Команды арифметических операций
Синтаксис команды Операция
ADD r/m(8,16,32), r(8,16,32) r/m(8,16,32) + r(8,16,32) ->
r/m(8,16,32)
r(8,16,32), /m(8,16,32) r(8,16,32) + r/m(8,16,32) -"r(8,16,32)
r/m(8,16,32), im(8,16,32) r/m(8,16,32) + im(8,16,32) ->
r/m(8,16,32)
r/m(16,32), im8 r/m(16,32) + 1гп8(знак) -> r/m(8,16,32)
EAX(AX.AL), im(16,8) EAX(AX.AL) + im32(16,8) -> EAX(AX,AL)
ADC r/m(8,16,32), r(8,16,32) r/m(8,16,32) + r(8,16,32) + CF ->
r/m(8,16,32) + CF r(8,16,32) + r/m(8,16,32) + CF -> r(8,16,32) + CF
r/m(8,16,32) + im(8,16,32) + CF -> r/m(8,16,32) + CF r/(16,32) +
мп8(энак) + CF -> r/m(8,16,32) + CF
EAX(AX.AL), im( 16,8) EAX(AX.AL) + im32(l6,8) + CF -> EAX(AX.AL) +
CF
SUB r/m(8,16,32), r(8,16,32) r/m(8,16,32) - r(8,16,32) ->
r/m(8,16,32)
r(8,16,32), r/m(8,16,32) r(8,16,32) - r/m(8,16,32) -> r(8,16,32)
r/m(8,16,32), im(8,16,32) r/m(8,16,32) - im(8,16,32) ->
r/m(8,16,32)
r/m(16,32), im8 r/m(16,32) - пп8(знак) -> r/m(8,16,32)
EAX(AX.AL), im( 16,8) EAX(AX.AL) - im32(16,8) -h EAX(AX.AL)
Предыдущая << 1 .. 45 46 47 48 49 50 < 51 > 52 53 54 55 56 57 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

Есть, чем поделиться? Отправьте
материал
нам
Авторские права © 2009 BooksShare.
Все права защищены.
Rambler's Top100

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed