[ЭКЗАМЕН 04] Процессор 8086. Регистр флагов. - mRrvz/bmstu-asm GitHub Wiki

Регистры флагов в 8086.

Флаги - выставляются при выполнение операций, в основном арифметических. С помощью этих флагов можно определить что-нибудь определить, например было ли переполнение при последней выполненной операции.

Каждый флаг представляет собою 1 бит, выставляемый в 0 (флаг сброшен) или в 1 (флаг установлен). Не существует специальных команд, позволяющих обратится к этому регистру напрямую.

Хотя разрядность регистра FLAGS 16 бит, реально используют не все 16. Остальные были зарезервированны при разработке процессора, но так и не были использованны.

Вот за что отвечает каждый бит в регистре FLAGS:

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
CF - PF - AF - ZF SF TF IF DF OF IOPL IOPL NT -

■ CF (carry flag) - флаг переноса - устанавливается в 1, если результат предыдущей операции не уместился в приемник и произошел перенос или если требуется заем при вычитании. Иначе 0.

■ PF (parity flag) - флаг чётности - устанавливается в 1, если младший байт результата предыдущей операции содержит четное количество единиц.

■ AF (auxiliary carry flag) - вспомогательный флаг переноса - устанавливается в 1, если в результате предыдущей операции произошел перенос из 3 в 4 или заем из 4 в 3 биты.

■ ZF (zero flag) - флаг нуля - устанавливается в 1, если если результат предыдущей команды равен 0.

■ SF (sign flag) - флаг знака - всегда равен старшему биту результата.

■ TF (trap flag) - флаг трассировки - предусмотрен для работы отладчиков в пошаговом режиме. Если поставить в 1, после каждой команды будет происходить передача управления отладчику.

■ IF (interrupt enable flag) - флаг разрешения прерываний - если 0 процессор перестает обрабатывать прерывания от внешних устройств.

■ DF (direction flag) - флаг направления - контролирует поведение команд обработки строк. Если 0, строки обрабатываются слева направо, если 1 справа налево.

■ OF (overflowflag) - флаг переполнения - устанавливается в 1, если результат предыдущей операции над числами со знаком выходит за допустимые для них пределы.

■ IOPL (I/O privilege level) - уровень приоритета ввода-вывода - а это на 286, на не нужно пока.

■ NT (nested task) - флаг вложенности задач - а это на 286, на не нужно пока.

Следующий вопрос: Процессор 8086. Шина адреса. Сегментная модель памяти.

Предыдущий вопрос: Процессор 8086. Разрядность. Регистры.