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

Команда

Назначение

Процессор

STC

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

8086

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

Команда

Назначение

Процессор

CLC

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

8086

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

Команда

Назначение

Процессор

CMC

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

8086

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

в реальном режиме

Команда Назначение Процессор

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

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

Команда _Назначение_Процессор

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

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

Команда Назначение Процессор

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

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

Команда Назначение Процессор

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

Загружает флаги XV, А¥, РР и СР из регистра АН значениями битов 7,6,4,2 и 0 соответственно. Зарезервированные биты 1, Зи 5 регистра флагов не изменяются.

Команда Назначение Процессор

РЦ^ Поместить РБАСБ в стек 8086

РивНРО Поместить ЕЯи^в в стек 80386

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

в двойном слове, помещенном в стек, обнуляются.

Команда Назначение Процессор

РС^ Загрузить РБАОБ из стека 8086

РС^Э • Загрузить БРБАОБ из стека 80386

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

Команда

Назначение

Процессор

CLI

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

BGB6

Сбрасывает флаг 1Т в 0. После выполнения этой команды процессор игнори­рует все прерывания от внешних устройств (кроме КМГ). В защищенном режиме эта команда, так же как и все другие команды, модифицирующие флаг Ш (РОРР или ШЕТ), выполняется, только если программе даны соответствующие приви­легии (СРЬ < ЮРЬ).

Команда Назначение Процессор

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

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

Команда Назначение Процессор

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

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