Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Конспект по МПиМК / Лекция 04.doc
Скачиваний:
160
Добавлен:
15.06.2014
Размер:
415.74 Кб
Скачать

8.9. Инструкции работы с флагами

Операции с флагами позволяют изменять значения отдельных флагов, а также сохранять их значения в стеке (или регистре AH) и восстанавливать сохраненные значения (см. таблицу 8.10).

Таблица 8.10

Команда

Описание

CLC

Сброс флага переноса (CF = 0)

CLD

Сброс флага направления (DF = 0 – инкремент (E)SI, (E)DI)

CLI

Запрет маскируемых аппаратных прерываний (IF = 0)

CMC

Инверсия флага переноса (CF = 1 – CF)

LAHF

Загрузка флагов (SF:ZF:0:AF:0:PF:0:CF) в регистр AH

POPF

Извлечение данных из стека в регистр флагов (EFLAGS[15–0])

POPFD

Извлечение данных из стека в расширенный регистр флагов EFLAGS

PUSHF

Помещение в стек регистра флагов (EFLAGS[15–0])

PUSHFD

Помещение в стек расширенного регистра флагов EFLAGS

SAHF

Загрузка флагов (SF, ZF, AF, PF, CF) из бит 7, 6, 4, 2, 0 регистра AH

STC

Установка флага переноса

STD

Установка флага направления (DF = 1 – декремент (E)SI, (E)DI)

STI

Разрешение маскируемых аппаратных прерываний (IF = 1)

8.10. Инструкции загрузки указателей

Инструкции позволяют загружать дальние указатели из памяти в регистр общего назначения и соответствующий сегментный регистр (см. таблицу 8.11).

Таблица 8.11

Команда

Описание

LDS r16, m16:16

~ r32, m16:32

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

в DS:r32

LES r16, m16:16

~ r32, m16:32

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

в ES:r32

LFS r16, m16:16

~ r32, m16:32

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

в FS:r32

LGS r16, m16:16

~ r32, m16:32

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

в GS:r32

LSS r16, m16:16

~ r32, m16:32

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

в SS:r32

8.11. Разные инструкции

В таблице 8.12 собраны инструкции не вошедшие ни в один из перечисленных классов. Инструкция ENTER служит для подготовки вызовов процедур (с поддержкой вложенности) в языках высокого уровня. Она выделяет область переменных в стеке. Обратная инструкция LEAVE восстанавливает исходное значение указателя стека.

Таблица 8.12

Команда

Описание

CPUID

Получение информации о процессоре в EAX, EBX, ECX, EBX. Параметр вызова (номер функции) задается в EAX (P5+)

LEA r16, m

~ r32, m

Загрузка эффективного адреса m в регистр r16/32

XLAT/XLATB

Перекодирование содержимого AL в значение из таблицы трансляции, адресуемой в (E)BX: AL = ES:[(E)BX + (AL)]

NOP

Нет операции

UD2

Неопределенные 2–байтные инструкции (вызывают исключение #UD)

ENTER i16:18

Выделение блока параметров в стеке

LEAVE

Освобождение блока параметров в стеке (действия, обратные ENTER восстанавливаются (E)SP и (E)BP)

46

Соседние файлы в папке Конспект по МПиМК