Загрузка...

Назначение арифметических флагов


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.

clip_image002

Рис. 2.21. Формат регистра флагов F

Загрузка...