 Базово-индексная адресация с масштабированием. Относительный адрес образуется сложением масштабированного индекса и базы, в качестве которой используется содержимое одного из регистров: ЕАХ, ЕВХ, ЕСХ, 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 - Инкремент операнда
ААА - ASCII - коррекция результата сложения
DAA - Десятичная коррекция результата сложения
Вычитание:
SUB - Вычитание операндов
SBB - Вычитание операндов и признака CF (заем)
DEC - Декремент операнда
NEG - Изменение знака операнда (с переводом в дополнительный код)
AAS - ASCII-коррекция результата вычитания
DAS - Десятичная коррекция результата вычитания
Сравнение: |