Регістри процесора
Як уже згадувалося, внутрішні регістри процесора є надоперативною пам'яттю невеликого розміру, яка призначена для тимчасового зберігання службової інформації або даних. Кількість регістрів у різних процесорах може бути від 6-8 до кількох десятків. Регістри можуть бути універсальними та спеціалізованими. Спеціалізовані регістри, які є у більшості процесорів, — це регістр-лічильник команд, регістр стану (PSW), регістр покажчика стека. Інші регістри процесора можуть бути як універсальними, так і спеціалізованими.
У 16-розрядному процесорі Intel 8086, який став базовим у лінії процесорів, що використовуються у персональних комп'ютерах, реалізовано принципово інший підхід. Кожен регістр цього процесора має своє особливе призначення, і замінювати один одного регістри можуть лише частково або не можуть взагалі. Зупинимося на особливостях цього процесора докладніше.
Процесор 8086 має 14 регістрів розрядністю 16 біт. З них чотири регістри (AX, BX, CX, DX) — це регістри даних, кожен з яких, крім зберігання операндів і результатів операцій, має ще й своє специфічне призначення:
- регістр AX - множення, розподіл, обмін з пристроями вводу/виводу (команди введення та виведення);
- регістр CX - лічильник циклів;
Для регістрів даних є можливість роздільного використання обох байтів (наприклад, для регістру AX вони мають позначення AL – молодший байт і AH – старший байт).
Наступні чотири внутрішні регістри процесора - це сегментні регістри, кожен з яких визначає положення одного з робочих сегментів (рис. 4.8):
- регістр CS (Code Segment) відповідає сегменту команд, що виконуються в даний момент;
- регістр DS (DataSegment) відповідає сегменту даних, з якими працює процесор;
- регістр ES (Extra Segment) відповідає додатковому сегменту даних;
- регістр SS (Stack Segment) відповідає сегменту стека.

Мал. 4.8.Сегменти команд, даних та стека в пам'яті.
У принципі, всі ці сегменти можуть перекриватися для оптимального використання простору пам'яті. Наприклад, якщо програма займає лише частину сегмента, сегмент даних може починатися відразу після завершення роботи програми (з точністю 16 байт), а не після закінчення всього сегмента програми.
Наступні п'ять регістрів процесора (SP - Stack Pointer, BP - Base Pointer, SI - Source Index, DI - Destination Index, IP - Instruction Pointer) є покажчиками (тобто визначають зміщення в межах сегмента). Наприклад, лічильник команд процесора утворюється парою регістрів CS і IP, а покажчик стека - парою регістрів SP та SS. Регістри SI, DI використовуються у рядкових операціях, тобто при послідовній обробці кількох осередків пам'яті однією командою.
Останній регістр FLAGS – це регістр стану процесора (PSW). З його 16 розрядів використовуються лише дев'ять (рис. 4.9): CF (Carry Flag) – прапор переносу при арифметичних операціях, PF (Parity Flag) – прапор парності результату, AF (Auxiliary Flag) – прапор додаткового перенесення, ZF (Zero Flag) - прапор нульового результату, SF (Sign Flag) - прапор знака (збігається зі старшим бітом результату), TF (Trap Flag) - прапор покрокового режиму (використовується при налагодженні), IF (Interruptenable Flag) - прапор роздільної здатності апаратних переривань, DF (Direction Flag) – прапор напряму при рядкових операціях, OF (Overflow Flag) – прапор переповнення.
Мал. 4.9.Регістр стану процесора 8086.
Біти регістру стану встановлюються чи очищаються залежно від результату виконання попередньої команди та використовуються деякими командами процесора. Біти регістру стану можуть також встановлюватися та очищатися спеціальними командами процесора (про систему команд процесора буде розказано у наступному розділі).
У багатьох процесорах виділяється спеціальний регістр, званий акумулятором (тобто накопичувачем). При цьому, як правило, тільки цей регістр-акумулятор може брати участь у всіх операціях, тільки через нього може здійснюватися взаємодія з пристроями вводу/виводу. Іноді в нього поміщається результат будь-якої виконаної команди (у цьому випадку говорять навіть про "акумуляторну" архітектуру процесора). Наприклад, в процесорі 8086 регістр даних АХ можна вважати своєрідним акумулятором, так як саме він обов'язково бере участь у командах множення і поділу, а також тільки через нього можна пересилати дані пристрій вводу/виводу і з пристрою введення/виводу. Виділення спеціального регістра-акумулятора спрощує структуру процесора і прискорює пересилання кодів усередині процесора, але в деяких випадках уповільнює роботу системи в цілому, тому що весь потік інформації повинен пройти через один регістр-акумулятор. У випадку, коли кілька регістрів процесора повністю взаємозамінні, таких проблем не виникає.
Система команд МП.