###
Регистр флажков
######################################################
¦---
старший байт ----¦--- младший байт
----¦
+-----------------------------------------------+
¦ х
х х х OF DF IF TF SF ZF
х AF х PF х CF¦
+-----------------------------------------------+
### х - состояние битов не определено (зарезервированы).
### OF - флажок ПЕРЕПОЛНЕНИЯ Устанавливается
арифметическими операциями.
---------------------------- Используется для
определения переполнения
в операциях с числами,
представленными в
дополнительном коде.
Если OF = 1, то
результат арифметической
операции вышел за
допустимые пределы:
- 128 … байт
… + 127
- 32768 … слово …
+ 32767
### DF - флажок НАПРАВЛЕНИЯ Устанавливается
командами CLD и
STD.
---------------------------- Используется в
командах обработки строк
для указания направления
продвижения по
строке данных.
Если DF = 0, то
строка сканируется от
меньших адресов к
большим.
### IF - флажок ПРЕРЫВАНИЙ Устанавливается
командами CLI и
STI.
---------------------------- Используется
для запрещения
ВНЕШНИХ
прерваний (ЗА ИСКЛЮЧЕНИЕМ
НЕМАСКИРУЕМЫХ).
Для блокировки
отдельных
прерываний
используется специальный регистр
масок.
Если IF = 0, то прерывания
не возникают.
### TF - флажок ТРАССИРОВКИ Устанавливается
комбинацией команд через
---------------------------- стек (смотрите применение
команды PUSHF).
Используется для перевода
микропроцессора
в одношаговый режим. После каждой
команды
автоматически
генерируется внутреннее
прерывание с переходом
к подпрограмме
обработки, написанной программистом.
Если TF = 1, включен режим
трассировки.
### SF - флажок З Н А К А
Устанавливается арифметическими
операциями.
---------------------------- Используется для
определения знака числа
в знаковой арифметике по
старшему биту
результата операции.
Если SF = 1, то результат
отрицательный.
### ZF - флажок Н У Л Я
Устанавливается арифметическими
операциями.
---------------------------- Показывает был ли
равен нулю результат
последней операции.
Если ZF = 1, то результат
равен нулю.
### AF - флажок ПЕРЕНОСА
Устанавливается арифметическими
операциями.
-------- (ДОПОЛНИТЕЛЬНОГО) Используется
в командах
десятичной
-------------------
арифметики. Фиксирует перенос
из младшей
тетрады результата в старшую.
Если AF = 1, то произошел
перенос.
### PF - флажок ЧЕТНОСТИ
Устанавливается арифметическими
операциями.
---------------------------- Используется
для контроля
правильности
передачи данных. Фиксирует наличие
четного
количества единиц
в младших 8 битах
результата последней операции.
Если PF = 1, то количество
единиц четное.
### CF - флажок ПЕРЕНОСА
Устанавливается арифметическими
операциями.
---------------------------- Используется для
определения переноса (при
сложении) или заема
(при вычитании), а
также значения
выдвигаемого бита после
операций сдвигов.
Если CF = 1, то произошел
перенос (заем).
### Команда LAHF
#########################################################
### Передает младший байт регистра флажков в регистр АН.
15----------------------7-----------------------0
¦ старший байт ¦SF
ZF AF
PF CF¦
+-----------------------------------------------+
¦
15----------------------7----------------------0
¦
AH
¦
AL
¦
+----------------------------------------------+
### Регистр флажков не модифицируется.
### Формат команды:
7
0
+-------------------------+ l = 1 байт
+----------------+
¦ LAHF
¦ t = 4 такта
¦ 10011111
¦
+-------------------------+
+----------------+
### Примечание:
Перевод системы команд МП 8080
в систему МП 8086. Слово
состояния
МП 8080 (PSW) образуется регистром флажков и аккумулятором и
используется
в команде PUSH PSW МП 8080, которую эмулирует команда LAHF МП 8086:
LAHF
PUSH AX -
эквивалентно -
PUSH PSW
### Команда SAHF
#########################################################
### Передает содержимое регистра АН в младший байт регистра флажков.
15----------------------7----------------------0
¦
AH
¦
AL
¦
+----------------------------------------------+
¦
15----------------------7-----------------------0
¦ старший байт ¦SF
ZF AF
PF CF¦
+-----------------------------------------------+
### Младший байт регистра флажков принимает
значение, извлеченное из
регистра AH.
### Формат команды:
7
0
+-------------------------+ l = 1 байт
+----------------+
¦ SAHF
¦ t = 4 такта
¦ 10011110
¦
+-------------------------+
+----------------+
### Примечание:
Перевод системы команд МП 8080
в систему МП 8086. Слово
состояния
МП 8080 (PSW) образуется регистром флажков и аккумулятором и
используется
в команде POP PSW МП 8080, которую эмулирует команда SAHF МП
8086:
POP AX
SAHF
- эквивалентно - POP
PSW
|