Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Методичка.doc
Скачиваний:
20
Добавлен:
08.11.2018
Размер:
1.15 Mб
Скачать

Сегментні регістри

Повна адреса пам'яті формується з адреси початку сегмента розміром 64 кілобайти і зсуву байта відносно початку цього сегмента.

Чотири сегментних регістри CS, DS, SS, ES зберігають початкові адреси чотирьох сегментів розміром 64 кілобайти.

CSCode Segment – сегмент коду – зберігає адреса сегмента коду виконуваної програми.

DSData Segment – сегмент даних – указує на сегмент даних, що використовуються програмою.

SSStack Segment – сегмент стека – указує на сегмент стека, область даних, яка призначена для тимчасового збереження параметрів і адрес, що використовуються програмою.

ESExtra Segment - додатковий сегмент – дозволяє програмі працювати більш ніж з 64 Кбайт пам'яті одночасно. Цей регістр бере участь у міжсегментних пересиланнях даних.

Усі ці 4 регістри 16-розрядні, але їхній уміст зміщений на 4 розряди вліво стосовно інших регістрів.

Регістри зсуву

П'ять регістрів служать для точної вказівки адреси байта або слова відносно початку відповідного сегмента.

IPInstruction Pointer – вказівник інструкції – указує на адресу наступної виконуваної інструкції в сегменті коду, що адресується за допомогою сегментного регістра CS. Цей регістр встановлюється автоматично засобами мікропроцесора і значення регістра IP не може бути явно отримано або змінене програмою. Однак є команди (наприклад безумовного переходу, виклику підпрограм), що неявно змінюють значення IP, зберігають його значення в стеку, відновлюють його значення зі стека.

Регістри SPStack Pointer – вказівник стека BPBase Pointer – вказівник бази

містять зсув у сегменті стека. SP указує на вершину стека. BP використовується для фіксації положення стека у визначений момент часу, щоб потім адресуватися до даних, що розташовані у стеку.

Регістри SISourse Index – індекс джерела DIDestination Index – індекс призначення

використовуються для формування складних адрес.

Регістр прапорів

Значення його бітів встановлюються в залежності від результату виконання команди арифметико–логічним пристроєм, наприклад від результату арифметичної операції (позитивний, негативний або дорівнює нулю). Уміст цього регістра використовується для визначення подальшого порядку виконання програми.

У регістрі прапорів 9 прапорців:

1 – прапор установлений, виставлений

0 – прапор скинутий, очищений

CF – Прапор переносу. Переустановлюється в кожній операції додавання, віднімання.

NC – (0) – немає переносу (No Carry)

CY – (1) – перенос (Carry Yes)

CY установлюється, якщо при додаванні (відніманні) з'являється 17-й біт рівний 1. Крім того, цей прапор містить останній висунутий біт при операції зсуву або циклічного зсуву.

ZF – Прапор нуля. Указує, чи не є результатом операції 0, або на рівність при порівнянні. Установлюється після кожної операції.

ZR – (1) – нуль (Zero)

NZ – (0) – не нуль (No Zero)

SF – Прапор знака. Указує знак результату арифметичних операцій.

NG – (1) – мінус (Negative)

PL – (0) – плюс (Plus)

OF – Прапор переповнення. Указує на арифметичне переповнення.

OV – (1) – переповнення

NV – (0) – немає переповнення

PF – Прапор паритету (парності). Указує на парність числа одиниць у молодших 8 бітах даних

1 - парне число одиниць

0 - непарне число одиниць

AF – Допоміжний прапор переносу (зовнішній перенос). Указує на корегування, що необхідне при двійково-десяткових (BCD) арифметичних операціях.

Це 6 статусних прапорів (прапори стану), що відбивають результати арифметичних і логічних операцій. Три прапори, що залишилися - керуючі, тобто такі, що змінюють режими роботи процесора.

DF – Прапор напрямку – Керує напрямком уліво/вправо в операціях, що повторюються (пересилання строкових даних наприклад)

IF – Прапор переривань – Керує дозволом/забороною зовнішніх переривань.

TF – Прапор трасування (пастки). Керує однокроковими операціями (при використанні DEBUG), генеруючи програмні переривання наприкінці кожної команди.

Регістр прапорів має вигляд

15

14

13

12

11

10

9

8

7

6

5

4

3

2

1

0

OF

DF

IF

TF

SF

ZF

AF

PF

CF

Сім біт у регістрі прапорів не використовуються.