Коды ситуации ( например, перенос, знак, переполнение ) и биты режимов хранятся в специальном 32-разрядном регистре EFLAGS. На Рисунке 2-9 показано содержимое этого регистра. Флаги данного регистра управляют определенными операциями и отражают состояние процессора i486. Флаги могут быть условно разделены на три группы: флаги состояния, управляющие флаги, системные флаги. Системные флаги обсуждаются в Части II.
Флаги состояния
Флаги состояния регистра EFLAGS отражают тип результата исполнения арифметических операций. Операция MOV не оказывает влияние на состояние данных флагов. Команды условных переходов и вызовы подпрограмм дают возможность программе отслеживать значения флагов состояния и реагировать на них. Например, при выполнении цикла с уменьшением счетчика цикла и выходом при равенстве счетчика 0, отслеживается состояние флага ZF, которое используется оператором условного перехода для повторения операций цикла или выхода из цикла. Флаги состояния показаны в Таблице 2-2.
Управляющий флаг
Управляющий флаг DF регистра EFLAGS определяет порядок работы операций со строками. DF (флаг направления, 10-ий бит)
Х Проверка выравнивания --+ | | | | | | | | | | | | | || х Флаг режима виртуального -+ | | | | | | | | | | | | || процессора 8086 | | | | | | | | | | | | || х Флаг возобновления ---------+ | | | | | | | | | | | || х Флаг вложенной задачи ----------+ | | | | | | | | | | || х Уровень привилегий ввода-вывода ---+ | | | | | | | | | || с Флаг переполнения --------------------+ | | | | | | | | || у Флаг направления -----------------------+ | | | | | | | || х Разрешение прерываний --------------------+ | | | | | | || х Флаг ловушки -------------------------------+ | | | | | || с Флаг знака -----------------------------------+ | | | | || с Флаг нуля --------------------------------------+ | | | || с Флаг вспомогательного переноса ---------------------+ | | || с Флаг четности ------------------------------------------+ | || с Флаг переноса ----------------------------------------------+ || || х - системный флаг || с - флаг состояния || у - управляющий флаг || || 1 или 0 обозначают биты, зарезервированные фирмой Intel || Данные регистры не используются, а их значения всегда постоянны || |+-----------------------------------------------------------------+ Рисунок 2-9. Регистр EFLAGS Таблица 2-2 Флаги состояния +--------------------------------------------------------------+| Имя | Назначения | Соответствует условию |+-------+-----------------+------------------------------------|| OF | переполнение | Результат превысил положительный || | | или отрицательный предел для чисел || SF | знак | Результат отрицательный (меньше 0) || ZF | нуль | Результат равен 0 || AF | вспомогательный | Перенос из 3-го бита || | перенос | (используется при работе с BCD) || PF | четность | Младший байт содержит четное число || | | единиц || CF | флаг переноса | Перенос за пределы значимых цифр || | | результата |+--------------------------------------------------------------+ Установка флага DF позволяет устанавливать автоматическое увеличение или уменьшение счетчиков во время операций со строками. Если флаг очищен, то счетчики инкрементируются, иначе декрементируются.