Прапоровий регістр (flags) - студопедія
Цей реєстр містить 16 біт. Регістр використовується побитно, тобто кожен біт має певне функціональне призначення, який називається прапором. Прапори управляються різними командами для індикації стану операції. У всіх випадках прапори зберігають своє значення до тих пір, поки інша команда не змінить його.
Мал. 7. 1. Прапоровий регістр flags.
Розглянемо прапори регістра flags в послідовності справа наліво.
CF (Carry Flag) - прапор переносу. Містить значення "переносів" (0 або 1) зі старшого розряду при арифметичних операціях і деяких операціях зрушення і циклічного зсуву.
PF (Parity Flag) - прапор парності. Перевіряє молодші вісім біт результатів операцій над даними. Непарне число біт приводить до установки цього прапора в 0, а парне - в 1.
AF (Auxiliary Carry Flag) - додатковий прапор переносу. Встановлюється в 1, якщо арифметична операція приводить до переносу четвертого праворуч біта (біт номер 3) в реєстрової однобайтового команді. Даний прапор має відношення до арифметичним операціям над символами коду ASCII і до десятковим запакованим полях.
ZF (Zero Flag) - прапор нуля. Встановлюється в якості результату арифметичних команд і команд порівняння. Як це не дивно, ненульовий результат приводить до установки нульового значення цього прапора, а нульовий - до установки одиничного значення. Команди умовного переходу JE і JZ перевіряють цей прапор.
SF (Sign Flag) - знаковий прапор. Встановлюється у відповідності зі знаком результату (старшого біта) після арифметичних операцій: позитивний результат встановлює 0, а негативний - 1. Команди умовного переходу JG і JL перевіряють цей прапор.
TF (Trap Flag) - прапор покрокового виконання. Якщо цей прапор встановлений в одиничний стан, то процесор переходить в режим покрокового виконання команд або в оцінний режим.
IF (Interrupt Flag) - прапор переривання. При нульовому стані цього прапора переривання заборонені, при одиничному - дозволені.
DF (Direction Flag) - прапор напрямку. Використовується в строкових операціях для визначення напрямку передачі даних. При нульовому стані команда збільшує вміст регістрів SI і DI, викликаючи передачу даних зліва направо, при нульовому - зменшує вміст цих регістрів, викликаючи передачу даних праворуч ліворуч.
OF (Overflow Flag) - прапор переповнення. Фіксує арифметичне переповнення, тобто перенесення вниз старшого (знакового) біта при знакових арифметичних операціях.
IOPL (Input / Output Privilege Level) - прапор рівня привілеїв введення-ви-вода. Використовується в захищеному режимі роботи мікропроцесора для контролю доступу до команд вводу-виводу в залежності від привілейованості задачі.
NT (Nested Task) - прапор вкладеності завдання. Використовується в захищеному режимі роботи мікропроцесора для фіксації того факту, що одна задача вкладена в іншу.
Як приклад візьмемо команду CMP, яка порівнює два операнда і впливає на прапори AF, CF, OF, PF, SF, ZF. Однак немає необхідності перевіряти всі ці прапори окремо. У наступному прикладі перевіряється, чи містить регістр BX нульове значення:
CMP BX, 00; Порівняння BX з нулем
JZ B50; Перехід на B50 якщо нуль
(Дії прі не нулі)
B50. ; Точка переходу при BX = 0