- •Тема 1: Основні елементи апаратних засобів комп’ютера. Пам’ять, одиниці об’єму пам’яті. Реальний та захищений режим роботи процесора
- •Пристрій керування шиною (контролер шини)
- •Характеристика та загальна структура мікропроцесорів
- •Регістри загального призначення Регістри загального призначення використовуються для будь-яких операцій без обмежень, але мають і свої спеціальні призначення
- •Регістр командного показчика
- •Регістр прапорців
- •Пам’ять, виділення пам’яті, біти, байти, сегменти, регістри
- •Реальний та захищений режими роботи
- •Адресація пам’яті в реальному режимі
- •0000H: 0000h [ сегмент: зміщення ] fffFh: 000Fh
- •Адресація пам’яті в реальному режимі
Регістр прапорців
В
регістрі прапорців (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.
