[Назад] [Далее]

10.1.1. Системные флаги

Регистр флагов EFLAGS — это 32-битный регистр, в то время как в главе 2.1.4 рассмотрена только часть из младших 16 бит. Теперь мы можем обсудить все:

Флаг TF: если он равен 1, перед выполнением каждой команды генерируется исключение #DB (INT 1).
Флаг IF: если он равен 0, процессор не реагирует ни на какие маскируемые аппаратные прерывания.
Флаг DP: если он равен 1, регистры EDI/ESI при выполнении команд строковой обработки уменьшаются, иначе — увеличиваются.
Поле IOPL: уровень привилегий ввода-вывода, с которым выполняется текущая программа или задача. Чтобы программа могла обратиться к порту ввода-вывода, ее текущий уровень привилегий (CPL) должен быть меньше или равен IOPL. Это поле можно модифицировать, только имея нулевой уровень привилегий.
Флаг NT: равен 1, если текущая задача является вложенной по отношению к какой-то другой — в обработчиках прерываний и исключений и вызванных командой call задачах. Флаг влияет на работу команды IRET.
Флаг RF: когда этот флаг равен 1, отладочные исключения временно запрещены. Он устанавливается командой IRETD из обработчика отладочного прерывания, чтобы #DB не произошло перед выполнением команды, которая его вызвала, еще раз. На флаг не влияют команды POPF, PUSHF и IRET.
Флаг VM: установка этого флага переводит процессор в режим V86 (виртуальный 8086).
Флаг АС: если установить этот флаг и флаг AM в регистре CR0, каждое обращение к памяти из программ, выполняющихся с CPL = 3, не выровненное на границу слова для слов и на границу двойного слова для двойных слов, будет вызывать исключение #АС.
Флаг VIF: это виртуальный образ флага IF (только для Pentium и выше).
Флаг VIP: этот флаг указывает процессору, что произошло аппаратное прерывание. Флаги VIF и VIP используются в многозадачных средах для того, чтобы каждая задача имела собственный виртуальный образ флага IF (только для Pentium и выше — см. главу 5.9.1).
Флаг ID: если программа может изменить значение этого флага — процессор поддерживает команду CPUID (только для Pentium и выше).

п»ї
"target=_blank><\/a>") //-->