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

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

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

табл. 2.13).
Таблица 2.13
Кодировка индексных и базовых регистров в байте SIB
Поле INDEX Индексный регистр Поле BASE Базовый регистр
000 ЕАХ 000 ЕАХ
001 ЕСХ 001 ЕСХ
010 EDX 010 EDX
011 ЕВХ 011 ЕВХ
100 - 100 ESP
101 EBP 101 EBP(d32)
110 ESI 110 ESI
111 EDI 111 EDI
СИСТЕМА КОМАНД: ОПЕРАЦИИ НАД ЦЕЛЫМИ ЧИСЛАМИ
Таблица 2.14
Разрядность операндов и относительных адресов в защищенном режиме
(+ наличие префикса, - отсутствие префикса) |
Значение бита D 0 0 0 0 1 1 1 1
Префикс OS (66Н) - - + + - - + +
Префикс AS (67Н) - + - + - + - +
Разрядность операнда 16 16 32 32 32 32 16 16
Разрядность относительного адреса 16 32 16 32 32 16 32
16
При коде INDEX = 100 значение индекса принимается равным 0. В этом случае
при MOD = 00 реализуется косвенно-регистровая или прямая (при BASE = 101)
адресация, а при MOD = 01 или 10 - базовая адресация. Регистр EBP
выбирается в качестве базового при значениях MOD = 01 или 10; при MOD =
00 в качестве базы используется 32-разрядное смещение (d32), задаваемое в
четырех следующих байтах команды. В качестве индексного может
использоваться любой из 32-разрядных регистров общего назначения, кроме
ESP (см. табл. 2.6). Содержимое этого регистра умножается на масштабный
коэффициент F (см. табл. 2.12), т. е. сдвигается влево на число разрядов
(0, 1, 3 или 4), задаваемое содержимым поля SS в байте SIB.
Таким образом, при введении байта SIB реализуются три дополнительных
варианта индексной и базово-индексной адресации (см. табл. 2.11).
Индексная адресация с масштабированием. Относительный адрес образуется
сложением масштабированного индекса (содержимого индексного регистра,
умноженного на коффициент F) и смещения d32. Этот способ осуществляется
при MOD = 00 и значении поля BASE = 101.
Базово-индексная адресация с масштабированием. Относительный адрес
образуется сложением масштабированного индекса и базы, в качестве которой
используется содержимое одного из регистров: ЕАХ, ЕВХ, ЕСХ, EDX, ESP, ESI
или EDI. Выбор базового регистра задается значением поля BASE при MOD =
00 (см. табл. 2.13).
Базово-индексная адресация со смещением и масштабированием. Относительный
адрес формируется сложением масштабированного индекса, базы и смещения d8
или d32. Поле BASE задает выбор базового регистра (см. табл. 2.13), а
поле MOD = 01 или 10 определяет разрядность смещения (см. табл. 2.11).
При описанных способах задается относительный адрес операнда в сегменте
данных DS или стека SS (см. табл. 2.11).Для адресации операндов в других
сегментах перед командой необходимо ввести префиксный байт SEG.
Относительная адресация. Используется при выполнении ряда команд
управления (условные и безусловные переходы, вызовы подпрограмм,
управление циклами), чтобы адресовать ячейку памяти, содержащую следующую
команду. При этом способе адрес формируется как сумма содержимого
регистра EIP, соответствующего текущей команде, и смещения d8, d16 или
d32, определяющего положение следующей команды относительно текущей.
2.2. СИСТЕМА КОМАНД: ОПЕРАЦИИ НАД ЦЕЛЫМИ ЧИСЛАМИ
К этому классу относятся команды выполнения пересылок, арифметических и
логических операций, сдвигов и других преобразований данных, в том числе
операции над битами и строками символов. Ниже дается перечень команд
этого класса, разбитых на несколько функциональных групп.
ПРОЦЕССОРЫ ОБЩЕГО НАЗНАЧЕНИЯ И СИСТЕМЫ НА ИХ ОСНОВЕ
Пересылка данных и адресов
Пересылка данных без преобразования:
MOV - Пересылка операнда
CMOVcc - Условная пересылка операнда
SETcc-Условная установка байта
PUSH - Запись операнда в стек
PUSHA(D) - Запись в стек содержимого всех регистров
POP - Чтение операнда из стека
POPA(D) - Чтение из стека содержимого всех регистров
XCHG - Обмен между регистрами или памятью и регистром
XLAT - Преобразование кодов
BSWAP -Перестановка байтов
Пересылка данных с преобразованием:
MOVSX - Пересылка байта или слова с расширением знака MOVZX- Пересылка
байта или слова с расширением нулями Ввод/вывод данных:
IN - Ввод операнда из порта в аккумулятор OUT - Вывод операнда из
аккумулятора в порт
Загрузка эффективного адреса и селекторов:
LEA - Загрузка эффективного адреса ЕА в регистр LDS - Загрузка указателя
адреса для сегмента DS LES - Загрузка указателя адреса для сегмента ES
LFS - Загрузка указателя адреса для сегмента FS LGS - Загрузка указателя
адреса для сегмента GS LSS - Загрузка указателя адреса для сегмента SS
Арифметические операции
Сложение:
ADD - Сложение операндов
ADC - Сложение операндов с признаком CF (перенос)
XADD - Обмен операндами и сложение INC - Инкремент операнда AAA-ASCII-
коррекция результата сложения DAA - Десятичная коррекция результата
сложения Вычитание:
SUB - Вычитание операндов
SBB - Вычитание операндов и признака CF (заем)
DEC - Декремент операнда
NEG - Изменение знака операнда (с переводом в дополнительный код) AAS -
ASCII-коррекция результата вычитания DAS-Десятичная коррекция результата
вычитания
Сравнение:
СМР - Сравнение операндов
Предыдущая << 1 .. 42 43 44 45 46 47 < 48 > 49 50 51 52 53 54 .. 528 >> Следующая

Реклама

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed

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

c1c0fc952cf0704ad12d6af2ad3bf47e03017fed