Реєстри прапорів EFLAGS - Студопедія
eflags/flags (flags register)- регістр прапорів. Розрядність eflags/flags - 32/16 біт. Окремі біти даного регістру мають певне функціональне призначення та називаються прапорами. Молодша частина цього регістру повністю подібна до регістру flags для i8086. Вміст регістру eflags.

Кожен біт цього регістру відповідає або особливості виконання деяких команд ЦП, або відбиває результат виконання команд блоком АЛУ процесора. Для аналізу бітів цього регістру передбачені спеціальні команди процесора.
- Прапори управління. Стан бітів регістру EFLAGS, відповідних прапорам, що управляє, програміст може змінити за допомогою спеціальних команд процесора. Ці прапори керують процесом виконання деяких команд ЦП. Як приклад можна навести прапори управління напрямком пересування даних (Direction) та перериванням (Interrupt).
- Прапори стану. Ці прапори відбивають результат виконання арифметичної чи логічної команди ЦП. Їх назва, опис та скорочене позначення наведені нижче ^
- Прапор перенесення (Carryflag, або CF) встановлюється у разі, якщо під час беззнакової арифметичної операції виходить число, розрядність якого перевищує розрядність виділеного йому поля результату.
- Прапор знака (Sign f!ag, або SF) встановлюється, якщо під час виконання арифметичної чи логічної операції виходить негативне число (тобто старший біт результату дорівнює 1).
Виходячи з особливостей використання, прапори регістру eflags/flags можна розділити на три групи:
8 прапорів стану. Ці прапори можуть змінюватись після виконання машинних команд. Прапори стану регістру eflags відображають особливості результату виконанняарифметичних чи логічних операцій. Це дає можливість аналізувати стан обчислювального процесу та реагувати на нього за допомогою команд умовних переходів та викликів підпрограм.
| Мнемоніка | Прапор | № в eflags | Зміст та призначення |
| cf | Прапор перенесення (Carry Flag) | · 1 - арифметична операція зробила перенесення зі старшого біта результату. Старшим є 7, 15 або 31 біт залежно від розмірності операнда; · 0 - перенесення не було. | |
| pf | Прапор паритету (Parity Flag) | · 1 - 8 молодших розрядів (цей прапор - тільки для 8 молодших розрядів операнда будь-якого розміру) результату містять парне число одиниць; · 0 - 8 молодших розрядів результату містять непарне число одиниць. | |
| af | Допоміжний прапор перенесення (Auxiliary carry Flag) | Тільки для команд, що працюють із BCD-числами. Фіксує факт позики з молодшого зошита результату: · 1 - в результаті операції додавання було зроблено перенесення з розряду 3 у старший розряд або при відніманні була позика в розряд 3 молодшого зошита зі значення у старшому зошиті; · 0 - переносів і позик в (з) 3 розряд (а) молодшого зошита результату не було. | |
| zf | Прапор нуля (Zero Flag) | · 1 - результат нульовий; · 0 - результат ненульовий. | |
| sf | Прапор знак (Sign Flag) | Відображає стан старшого біта результату (біти 7, 15 або 31 для 8, 16 або 32-розрядних операнда відповідно): · 1 - старший біт результату дорівнює 1; · 0 - старший біт результату дорівнює 0. | |
| of | Прапор переповнення (Overflow Flag) | Прапор of використовується для фіксації факту втрати значущого біта при арифметичнихопераціях: · 1 - в результаті операції відбувається перенесення (позика) у (з) старшого, знакового біта результату (біти 7, 15 або 31 для 8, 16 або 32-розрядних операндів відповідно); · 0 - в результаті операції не відбувається перенесення (позики) у (з) старшого, знакового біта результату. | |
| iopl | Рівень привілеїв вводу-виводу (Input/Output Privilege Level) | 12, | Використовується у захищеному режимі роботи мікропроцесора контролю доступу до команд вводу-вывода залежно від привілейованості завдань. |
| nt | прапорець вкладеності завдання (Nested Task) | Використовується у захищеному режимі роботи мікропроцесора для фіксації того факту, що одне завдання вкладено в інше. |
1 прапор управління. Позначається df (Directory Flag). Він знаходиться в 10-му біті регістру eflags і використовується ланцюжковими командами. Значення прапора df визначає напрямок поелементної обробки в цих операціях: від початку рядка до кінця (df = 0) або навпаки, від кінця рядка до її початку (df = 1). Для роботи із прапором df існують спеціальні команди: cld (зняти прапор df) та std (установити прапор df). Застосування цих команд дозволяє привести прапор df у відповідність до алгоритму та забезпечити автоматичне збільшення або зменшення лічильників при виконанні операцій з рядками;
5 системних прапорів, що управляють введенням/виводом, перериваннями, що маскуються, налагодженням, перемиканням між завданнями і віртуальним режимом 8086. Прикладним програмам не рекомендується модифікувати без необхідності ці прапори, так як у більшості випадків це призведе до переривання роботи програми.
eip/ip (Instraction Pointer register)- регістр-покажчик команд. Реєстр eip/ip має розрядність 32/16 біт тамістить зміщення наступної команди, що підлягає виконанню щодо вмісту сегментного регістру cs в поточному сегменті команд. Цей регістр безпосередньо недоступний програмісту, але завантаження та зміна його значення виконуються різними командами управління, до яких належать команди умовних та безумовних переходів, виклику процедур та повернення з процедур. Виникнення переривань також призводить до модифікації регістру eip/ip.
Чи не знайшли те, що шукали? Скористайтеся пошуком: