Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Опорний конспект лекцій_ Асемблер.Docx
Скачиваний:
0
Добавлен:
20.02.2020
Размер:
506.89 Кб
Скачать
      1. Регістри стану і керування

В МП включено декілька регістрів, які постійно містять інформацію як про стан самого МП, так і програми, команди якої в даний момент завантажені на конвеєр.

До цих регістрів відносяться: o регістр прапорів eflags/flags; o регістр вказівника команди eip/ip.

Використовуючи ці регістри, можна отримувати інформацію про результати виконання команд і впливати на стан самого мікропроцесора. Розглянемо призначення і вміст цих регістрів:

o eflags/flags (flag register) – регістр прапорів. Розрядність 32/16 бітів. Окремі біти мають певне функціональне призначення і називаються прапорами. Молодша частина цього регістру повністю аналогічна регістру flags для i8086. На рис. 1.3 показано вміст регістра eflags.

Виходячи із особливостей використання, прапори регістра eflags/flags можна розділити на три групи:

o 8 прапорів стану. Ці прапори можуть змінитися після виконання машинних команд. Прапори стану регістра eflags відображають особливості результату виконання арифметичних або логічних операцій. Це дає можливість аналізувати стан обчислювального процесу і реагувати на нього з допомогою команд умовних переходів і викликів підпрограм. В табл. 1.1 наведено прапори станів і їх призначення.

o 1 прапор керування. Позначається як df (Directory flag). Він знаходиться у десятому регістрі eflags і використовується ланцюжковими командами. Значення df визначає напрямок поелементної обробки: від початку строки до кінця (df=0), від кінця до початку (df=1). Для роботи з прапором існує команда cld (зняти прапор) і std (встановити прапор).

o 5 системних прапорів, що керують вводом/виводом, маскованими перериваннями, відладкою, переключенням між задачами і віртуальним режимом роботи i8086. Прикладним програмам не рекомендується модифікувати без необхідності ці прапори. В табл. 1.2 перечисленні системні прапори і їх призначення.

Рис.1.3. Вміст регістра eflags

Прапори стану

Таблиця 1.1.

Мнемоніка прапора

Прапор

Номер біта в eflags

Зміст і призначення

cf

Прапор переносу

(Carry flag)

0

1-арифметична операція зробила перенос із старшого біта результату. Старшим є 7-й, 15-й і 31-й біт в залежності від розмірності операнду

0 – переносу не було

pf

Прапор паритету

(Parity Flag)

2

1-вісім молодших розрядів (цей прапор тільки для 8-ми молодших розрядів любого операнду) результату містять парне число одиниць

0-вісім молодших розрядів результату

містять непарне число одиниць

af

Допоміжний прапор переносу (Auxiliary carry Flag)

4

Тільки для команд, що працюють з BCD- числами. Фіксує позичання із молодшої тетради результату:

1- в результаті операції додавання відбувся перенос із розряду 3 в старший розряд або при відніманні було позичання в розряд 3 молодшої тетради із значення в старшій тетраді;

0-переноса і позичання в (із) 3 розряд(у)

молодшої тетради результату не було.

zf

Прапор нуля

(Zero Flag)

6

1-результат нульовий

0-результат ненульовий

sf

Прапор знаку

(Sign Flag)

7

Відображає стан старшого біта результату (біти 7, 15, 31 для 8, 16, 32-розрядних операндів відповідно):

1-старший біт результату дорівнює 1; 0-старший біт результату дорівнює 0

of

Прапор переповнення

(Overflaw Flag)

11

Прапор of використовується для фіксування факту втрати значущого біта при арифметичних операціях:

1-в результаті операції відбувається перенесення (позичання) в (із) старшого, знакового біта результату (біти 7, 15, 31 для

8, 16, 32-розрядних операндів):

0-в результаті операції не відбувається перенесення (позичання) в (із) старшого, знакового біта результату.

iopl

Рівень привілей ввода-вивода

12,13

Використовується у захищеному режимі роботи МП для контролю доступу до команд вводу-виводу, в залежності від привілейованості задачі

Системні прапори

Таблиця 1.2.

Мнемоніка прапора

Прапор

Номер біта в eflags

Зміст і призначення

tf

Прапор трасування

(Trace Flag)

8

Призначений для покрокової роботи МП: 1-МП генерує переривання з номером 1

після виконання кожної машинної команди. Може використовуватися при відладці програми, зокрема відладчиками;

0-звичайна робота

if

Прапор переривання

(Interrupt enable Flag)

9

Призначений для дозволу або заборони (маскування) апаратних переривань (переривань по входу INTR):

1-апаратні переривання дозволені; 0-апаратні переривання заборонені

rf

Прапор відновлення

(Resume Flag)

16

Використовується при обробці переривань від регістрів відладки

vm

Прапор віртуального

8086

17

Признак роботи МП в режимі віртуального

8086:

(Virtual 8086 Mode)

1-процесор працює в режимі віртуального

8086;

0-процесор працює в реальному або захищеному режимі

ac

Прапор конролю вирівнювання (Alignment Check)

18

Призначений для дозволу контролю вирівнювання при звертанні до пам’яті. Використовується сумісно з бітом am в системному регістрі cr0. Наприклад, Pentium дозволяє розміщувати команди і дані з любого адресу. Якщо потрібно контролювати вирівнювання даних і команд по адресах кратним 2 або 4, то встановлення даних бітів приведе до того, що всі звернення по некратних адресах будуть збуджувати виняткову ситуацію

vif

Прапор віртуального переривання (Virtual Interrupt Flag)

19

При певних умовах (одна із яких – робота МП у V-режимі) є аналогом прапору if.

Прапор vif використовується сумісно з прапором vip. Прапор появився у МП Pentium

vip

Прапор відкладеного віртуального переривання (Virtual Interrupt flag)

20

Встановлюється в 1 для індикації відкладеного переривання.

Використовується при роботі у V-режимі сумісно з прапором vif. Прапор появився у МП Pentium

id

Прапор ідентифікації

(Identification flag)

21

Використовується для того, щоб показати факт підтримки МП інструкції cpuid. Якщо програма може встановити або очистити цей прапор, це означає що дана модель МП підтримує інструкцію cpuid