К АЛУ примыкает регистр флагов F. Его младший байт FL полностью соответствует
регистру флагов К580ВМ80, а старший байт FH содержит четыре флага, отсутствующие в
К580ВМ80. Шесть арифметических флагов фиксируют определенные признаки результата
выполнения операции (арифметической, логической, сдвига или загрузки регистра флагов).
Значения этих флагов (кроме флага AF) используются для реализации условных переходов,
изменяющих
ход выполнения программы. Различные команды влияют на флаги по-разному.
Назначение арифметических флагов.
CF — флаг переноса, фиксирует значение переноса, возникающего при сложении
(вычитании) байтов или слов, а также значение выдвигаемого бита при сдвиге операнда.
PF—флаг четности (или паритета), фиксирует наличие четного числа единиц в
младшем байте результата операции, может быть использован, например, для контроля
правильности передачи данных.
AF — флаг вспомогательного переноса, фиксирует перенос (заем) из младшей
тетрады, т. е. из бита аз, в старшую при сложении (вычитании), используется только для
двоично-десятичной арифметики, которая оперирует исключительно младшими байтами.
ZF — флаг нуля, сигнализирует о получении нулевого результата операции.
SF — флаг знака, дублирует значение старшего бита результата, который при
использовании дополнительного кода соответствует знаку числа.
OF — флаг переполнения, сигнализирует о потере старшего бита результата
сложения или вычитания в связи с переполнением разрядной сетки при работе со знаковыми
числами. При сложении этот флаг устанавливается в единицу, если происходит перенос в
старший бит и нет переноса из старшего бита или имеется перенос из старшего бита, но
отсутствует перенос
в него; в противном случае флаг OF устанавливается в нуль. При
вычитании он устанавливается в единицу, когда возникает заем из старшего бита, но заем в
старший бит отсутствует либо имеется заем в старший бит, но отсутствует заем из него.
Имеется специальная команда прерывания при переполнении, которая в указанных случаях
генерирует программное прерывание
.
Для управления некоторыми действиями МП предназначены три дополнительных
флага.
DF — флаг направления, управляемый командами CLD и STD; определяет порядок
обработки цепочек в соответствующих командах: от меньших адресов (DF=0) или от
больших (DF==1).
IF— флаг разрешения прерываний, управляемый с помощью команд CL1 и STI; при
IF==1 макропроцессор воспринимает (распознает) и соответственно реагирует на запрос
прерывания по входу INTR; при IF=0 прерывания по этому входу запрещаются
(маскируются) и МП игнорирует поступающие запросы прерываний. Значение флага IF не
влияет на восприятие внешних немаскируемых прерываний по входу NMI, а также
внутренних (программных) прерываний,
выполняемых по команде INT.
TF—флаг трассировки (прослеживания). При TF=1 МП переходит в покомандный
(пошаговый) режим работы, применяемый при отладке программ, когда автоматически
генерируется сигнал внутреннего прерывания типа 1 после выполнения каждой команды с
целью перехода к соответствующей подпрограмме, которая обычно обеспечивает индикацию
содержимого внутренних регистров МП. Команды установки или сброса флага TF
отсутствуют, так что управление этим
флагом осуществляется опосредованно, путем
пересылки содержимого регистра флагов F через стек в общий регистр, установки
требуемого значения восьмого бита и обратной пересылки
сформированного слова в регистр F.
OF DF
IF
TF
SF
X
X
X
ZF
AF PF CF
XX
X
14
13 12 11 10 9
8
15
76543210
X
FH FL
Рис. 2.21. Формат регистра флагов F