Регістр прапорців
В регістрі прапорців (Flags) поміщаються признаки результатів виконання програми. Його розряди також керують обробкою переривань, послідовністю задач які переривалися, вводом/виводом і переключенням в режим CPU 8086. Структура регістру флагів має наступний вигляд:
Рис. 2. Структура регістру прапорців.
ID (біт 21) – прапорець підтримки ідентифікації процесора. Якщо прапорець можна змінити програмно, то підтримується команда ідентифікації процесора CPUID.
VIP (біт 20) – прапорець відкладеного переривання (для віртуального режиму). 1 – є відкладені переривання; 0 – немає відкладених переривань.
VIF (біт 19) – прапорець віртуального переривання. Якщо 1 – апаратні переривання дозволені; 0 – апаратні переривання недозволені.
АС (біт 18) – прапорець контролю вирівнювання.
VM – (біт 17) – віртуальний режим. Включає віртуальний режим CPU 8086 в середині захищеного режиму CPU 8086 і вище. Цей біт може встановлюватись тільки в захищеному режимі.
RF – (біт 16) – прапорець відновлення. Використовують з точками стопу регістрів відладки і в покроковому режимі. Перевіряється після кожної команди і перед перериванням. Якщо RF = 1, то будь-яка помилка відладки в наступній команді ігнорується. Біт RF встановлюється в 0 при успішному завершені кожної команди сигналізуючи про відсутність помилки.
NT (біт 14) – вкладена задача. Використовується тільки в захищеному режимі.
NT =1 встановлюють для того, щоб вказати на те, що поточна задача вложена в деяку іншу задачу і TSS (сегмент стану) даної задачі має правильний зворотній зв’язок з TSS попередньої задачі. NT встановлюється в “1” чи в “0” при передачі управління в іншу задачу.
IOPL – (біт 12, 13) – рівень пріоритету вводу/виводу. Застосовується тільки в захищеному режимі. IOPL вказує максимальну величину поточного рівня пріоритетів (CPL), що дозволяє виконання команд вводу/виводу без генерації переривання 13.
OF (біт 11) – переповнення. OF = 1 у випадку коли проведена операція привела до переповнення знакового ряду. Для 8, 16, 32 – розрядних операцій OF = 1 при переповненні бітів 7, 15, 31 відповідно.
DF (біт 10) – прапорець напрямку. Вказує на зменшення при “1” чи збільшення (при “0”), (автоматичний декримент / інкремент), вмісту регістрів ESI і/або EDI при виконанні команд обробки рядків (символьних даних).
IF (біт 9) – прапорець переривання INTR. Переривання дозволені якщо IF = “1” (дозволено обробляти запити зовнішніх переривань на вході INTR). Якщо IF = “0”, то розпізнаються тільки немасковані (програмні) переривання.
TF (біт 8) – прапорець трасування (пастки). Керує генерацією переривання INT 3, якщо TF = 1, то процесор переходить в стан переривання INT 3 після виконання кожної команди (кроковий режим).
SF (біт 7) – прапорець знаку. SF = 0 – для додатних чисел; SF = 1 – для від’ємних чисел. Для 8, 16, 32 – розрядних операндів SF відображає значення бітів 7, 15, 31 відповідно.
ZF (біт 6) – прапорець нуля. ZF = 1, коли всі розряди результату рівні 0, в іншому випадку ZF = 0.
AF (біт 4) – прапорець додаткового переносу. Використовується для додавання і віднімання даних в двійково-десятковому форматі (BCD). AF=1, якщо результат операції приводить до необхідності операції переносу чи позичання між півбайтами.
PF (біт 2) – прапорець парності (паритету). Функція тільки молодших восьми розрядів, незалежно від величини операнду. PF = 1 у випадку коли молодші вісім розрядів операнду містять парне число одиничних біт, інакше PF = 0.
CF (біт 0 – прапорець переносу. CF = 1, якщо виконана операція приводить до переносу (додавання), або позичання (віднімання) в старший не знаковий розряд, інакше CF = 0.
Дата добавления: 2015-10-09; просмотров: 2245;