Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
SP_MET_1.DOC
Скачиваний:
4
Добавлен:
25.08.2019
Размер:
595.97 Кб
Скачать

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

• Команда: STC

• Назначение: Установить флаг переноса

• Процессор: 8086

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

• Команда: CLC

• Назначение: Сбросить флаг переноса

• Процессор: 8086

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

• Команда: CMC

• Назначение: Инвертировать флаг переноса

• Процессор: 8086

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

• Команда: 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

• Назначение: Поместить EFLAGS в стек

• Процессор: 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 не изменяется. В защищенном режиме с уровнем привилегий, большим нуля, но меньшим или равным 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 не изменяет значений флагов.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]