Этот 16разрядный (16битовый) регистр содержит всю необходимую информацию о состоянии процессора 8086 и результатах последних инструкций (см. Рис. 4.5).
15 0
| | | | | O | D | T | S | Z | | A | P | P | | C |
Битовые флаги:
O флаг переполнения;
D флаг направления;
I флаг прерывания;
T флаг перехвата;
S флаг знака;
Z флаг нуля;
A флаг дополнительного переноса;
P флаг четности;
C флаг переноса.
Рис. 4.5 Регистр флагов процессора 8086.
Например, если вы хотите знать, получен ли при вычитании нулевой результат, непосредственно после этой инструкции вам следует проверить флаг нуля (бит Z в регистре флагов). Если он установлен (то есть имеет ненулевое значение), это будет говорить о том, что результат нулевой. Другие флаги, такие, как флаги переноса и переполнения аналогичным образом сообщают о результатах арифметических и логических операций.
Другие флаги управляют режимом операций процессора 8086. Флаг направления управляет направлением, в котором строковые инструкции выполняют перемещение, а флаг прерывания управляет тем, будет ли разрешено внешним аппаратным средствам, таким, например, как клавиатура или модем, временно приостанавливать текущий код для выполнения функций, требующих немедленного обслуживания. Флаг перехвата используется только программным обеспечением, которое служит для отладки другого программного обеспечения (отладчики).
Регистр флагов не считывается и не модифицируется непосредственно. Вместо этого регистр флагов управляется в общем случае с помощью специальных инструкций (таких, как CLD, STI и CMC), а также с помощью арифметических и логических инструкций, модифицирующих отдельные флаги. И наоборот, содержимое отдельных разрядов регистра флагов влияет на выполнение инструкций (например, JZ, RCR и MOVSB). Регистр флагов не используется на самом деле, как ячейка памяти, вместо этого он служит для контроля за состоянием и управления процессором 8086.
Иначе говоря, другие регистры и память содержат данные, а регистр флагов содержит информацию о соотношении между данными, результатах операций и состоянии процессора 8086 в целом.
