Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
методичка часть1.doc
Скачиваний:
7
Добавлен:
08.05.2019
Размер:
769.02 Кб
Скачать

2.3.9. Управление флагами

 Команда:

STC

 Назначение:

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

 Процессор:

8086

Устанавливает флаг CF в 1.

 Команда:

CLC

 Назначение:

Сбросить флаг переноса

 Процессор:

8086

Сбрасывает флаг CF в 0.

 Команда:

CMC

 Назначение:

Инвертировать флаг переноса

 Процессор:

8086

Инвертирует флаг СF.

 Команда:

STD

 Назначение:

Установить флаг направления

 Процессор:

8086

Устанавливает флаг DF в 1, так что при последующих строковых операциях регистры DI и SI будут уменьшаться.

 Команда:

CLD

 Назначение:

Сбросить флаг направления

 Процессор:

8086

Сбрасывает флаг DF в 0, так что при последующих строковых операциях регистры DI и SI будут увеличиваться.

 Команда:

LAHF

 Назначение:

Загрузить флаги состояния в АН

 Процессор:

8086

Копирует младший байт регистра FLAGS в АН, включая флаги SF (бит 7), ZF (бит 6), AF (бит 4), PF (бит 2) и CF (бит 0). Бит 1 устанавливается в 1, биты 3 и 5 — в 0.

 Команда:

SAHF

 Назначение:

Загрузить флаги состояния из АН

 Процессор:

8086

Загружает флаги SF, ZF, AF, PF и CF из регистра АН значениями бит 7, 6, 4, 2 и 0 соответственно. Зарезервированные биты 1, 3 и 5 регистра флагов не изменяются.

 Команда:

PUSHF

 Назначение:

Поместить FLAGS в стек

 Процессор:

8086

 Команда:

PUSHFD

 Назначение:

Поместить ЕFLAGS в стек

 Процессор:

80386

Эти команды копируют содержание регистра FLAGS или EFLAGS в стек (уменьшая SP или ESP на 2 или 4 соответственно). При копировании регистра EFLAGS флаги VM и RF (биты 16 и 17) не копируются, соответствующие биты в двойном слове, помещенном в стек, обнуляются.

 Команда:

POPF

 Назначение:

Загрузить FLAGS из стека

 Процессор:

8086

 Команда:

POPFD

 Назначение:

Загрузить EFLAGS из стека

 Процессор:

80386

Считывает из вершины стека слово (POPF) или двойное слово (POPFD) и помещает в регистр FLAGS или EFLAGS. Эффект этих команд зависит от режима, в котором выполняется программа: в реальном режиме и в защищенном режиме с уровнем привилегий 0 модифицируются все незарезервированные флаги в EFLAGS, кроме VIP, VIF и VM. VIP и VIF обнуляются, и VM не изменяется. В защищенном режиме c уровнем привилегий, большим нуля, но меньшим или равным IOPL, модифицируются все флаги, кроме VIP, VIF, VM и IOPL. В режиме V86 не модифицируются флаги VIF, VIP, VM, IOPL и RF.

 Команда:

CLI

 Назначение:

Запретить прерывания

 Процессор:

8086

Сбрасывает флаг IF в 0. После выполнения этой команды процессор игнорирует все прерывания от внешних устройств (кроме NMI). В защищенном режиме эта команда, так же как и все другие команды, модифицирующие флаг IF (POPF или IRET), выполняется, только если программе даны соответствующие привилегии (CPL < IOPL).

 Команда:

STI

 Назначение:

Разрешить прерывания

 Процессор:

8086

Устанавливает флаг IF в 1, отменяя тем самым действие команды CLI.

 Команда:

SALC

 Назначение:

Установить AL в соответствии с CF

 Процессор:

8086

Устанавливает AL в 0FFh, если флаг CF = 1, и сбрасывает в 00h, если CF = 0. Это недокументированная команда с кодом 0D6h, присутствующая во всех процессорах Intel и совместимых с ними (начиная с 8086). В документации на Pentium Pro эта команда упоминается в общем списке команд, но ее действие не описывается. Действие SALC аналогично SBB AL,AL, но SALC не изменяет значений флагов.