ВІКІСТОРІНКА
Навигация:
Інформатика
Історія
Автоматизація
Адміністрування
Антропологія
Архітектура
Біологія
Будівництво
Бухгалтерія
Військова наука
Виробництво
Географія
Геологія
Господарство
Демографія
Екологія
Економіка
Електроніка
Енергетика
Журналістика
Кінематографія
Комп'ютеризація
Креслення
Кулінарія
Культура
Культура
Лінгвістика
Література
Лексикологія
Логіка
Маркетинг
Математика
Медицина
Менеджмент
Металургія
Метрологія
Мистецтво
Музика
Наукознавство
Освіта
Охорона Праці
Підприємництво
Педагогіка
Поліграфія
Право
Приладобудування
Програмування
Психологія
Радіозв'язок
Релігія
Риторика
Соціологія
Спорт
Стандартизація
Статистика
Технології
Торгівля
Транспорт
Фізіологія
Фізика
Філософія
Фінанси
Фармакологія


Модель мікропроцесора Intel 8086 для програміста

 

Модель мікропроцесора для програміста, або просто – програмна модель, складається з регістрів, які доступні користувачу на рівні команд.

В програмній моделі мікропроцесора існує 14 16-бітних регістрів (рис.1). Для зручності регістри розділені на три групи. Поза цими групами знаходиться регістр прапорців.

Група регістрів загального призначення, що називають також регістрами даних, утворена регістрами АХ, ВХ, СХ і DХ. Кожний з цих 16-бітних регістрів можна використовувати як два 8-бітних регістри: AL, АН, BL, BH, CL, CH, DL і DH. В цій групі регістрів L і Н означають молодші і старші байти відповідних 16-бітових регістрів. Регістри АХ, ВХ, СХ і DХ призначені в основному для збереження даних, однак існує багато команд, які використовують регістри даних на певні функції (табл. 5). Тільки регістри даних можуть використовуватися і як 16-бітні, і як 8-бітні. Усі регістри інших груп – 16-бітові.

Друга група регістрів, які називаються вказівними й індексними регістрами, представлена адресними регістрами SP, BP, SI і DI. Вони призначені для збереження 16-бітних адрес (внутрішньосегментних зміщень) і забезпечують при цьому непряму адресацію та динамічне обчислення ефективної адреси пам'яті. Гнучкість обчислень досягається тим, що ці регістри можуть брати участь в арифметичних і логічних операціях так само, як і регістри попередньої групи. Тому надалі регістри даних і регістри вказівної й індексної груп називаються загальними регістрами.

Вказівні регістри SP і BP призначені для спрощення доступу до даних, що знаходиться в поточному сегменті стека, а не в сегменті даних. Індексні регістри SI і DI містять зміщення, що за замовчуванням відносяться до поточного сегмента даних.

 

 

 

Третю групу регістрів утворюють сегментні регістри CS, DS, SS, ES.

В мікропроцесорі за допомогою 20-бітної фізичної адреси можна адресувати пам'ять обсягом 1 Мбайт. Цей простір пам'яті розділений на логічні сегменти обсягом 64 Кбайт. При виконанні програми можна одночасно звертатися до чотирьох сегментів. Їх базові (початкові) адреси розташовані в сегментних регістрах CS, DS, SS, ES.

Регістр сегмента команд CS (code segment) вказує на поточний сегмент коду (програми), звідки вибираються команди.

 

Таблиця 5 - Спеціальні функції регістрів мікропроцесора Intel 8086

 

Регістр Призначення Функція
AX Акумулятор Множення, ділення і введення-виведення слів
AL Акумулятор (молодший) Множення, ділення і введення-виведення байтів; десяткова арифметика; перетворення
AH Акумулятор (старший) Множення і ділення байтів
BX База Базовий регістр; перетворення
CX Лічильник Операції з ланцюжками, цикли
CL Лічильник (молодший) Динамічні зсуви і ротації
DX Дані Множення і ділення слів; непряме введення-виведення
SP Покажчик стека Стекові операції
BP Покажчик бази Базовий регістр
SI Індекс джерела Операції з ланцюжками; індексний регістр
DI Індекс одержувача Операції з ланцюжками; індексний регістр

 

Регістр сегмента стека SS (stack segment) вказує на поточний сегмент стека. Стек – це область пам'яті, що використовується для тимчасового збереження даних і адрес.

Регістр сегмента даних DS (data segment) вказує на поточний сегмент даних, в якому містяться змінні.

Регістр додаткового сегмента ES (extra segment) вказує на поточний додатковий сегмент, що використовується для зберігання даних.

Особливу роль відіграють у мікропроцесорі 16-бітні покажчики команд IP (аналог стандартного лічильника команд PC) і регістр прапорців (або ознак). Регістр IP разом з регістром CS використовується для формування 20-бітової фізичної адреси. Регістр CS визначає сегмент виконуваної програми, а регістр IP містить зміщення наступної команди, яку буде вибирати з пам'яті програм спеціальний блок мікропроцесора, що називається інтерфейсом шини.

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

1. Прапорець переносу CF (carry flag) дорівнює 1, якщо відбулося перенесення одиниці при додаванні або позичення одиниці при відніманні. В противному разі він дорівнює нулю. Крім того, CF, містить значення біта, який при зсуві або циклічному зсуві регістра чи комірки пам'яті вийшов за їхні межі і відображає результат операції порівняння. Нарешті, CF служить індикатором результату множення.

2. Прапорець парності PF (parity flag) дорівнює 1, якщо в результаті операції отримано парне число одиниць у молодшому байті результату. Цей прапорець в основному використовується для контролю правильності пересилання даних.

3. Прапорець допоміжного перенесення AF (auxiliary carry flag) дорівнює 1, якщо відбулося перенесення або позичення одиниці з молодшої тетради в старшу 8- чи 16-бітового результату. Цей прапорець використовується в десятковій арифметиці при корекції результатів додавання і віднімання.

4. Прапорець нуля ZF (zero flag) дорівнює 1, якщо отримано нульовий результат операції, а ненульовий результат встановлює ZF у нуль.

5. Прапорець знаку SF (sign flag) має значення тільки при операціях над числами зі знаком. Прапорець дорівнює 1, якщо в результаті арифметичної або логічної операції, зсуву або циклічного зсуву отримане від’ємне число. В противному разі він дорівнює нулю. Іншими словами, SF дублює старший (знаковий) біт результату незалежно від того, має результат довжину 8 чи 16 біт.

6. Прапорець переповнення OF (overflow flag) дорівнює 1, якщо результат додавання двох чисел з однаковим знаком або результат віднімання двох чисел з протилежними знаками вийде за межі допустимого діапазону значень операндів. В противному разі він дорівнює нулю. Крім того, OF=1, якщо старший (знаковий) біт операнда змінився в результаті операції арифметичного зсуву. В противному разі він дорівнює нулю.

Три додаткових прапорці призначені для керування деякими діями мікропроцесора.

1. Прапорець напрямку DF (direction flag) змушує мікропроцесор зменшувати на одиницю (якщо DF=1) чи збільшувати на одиницю (якщо DF=0) регістри індексу після виконання команди роботи з рядками.

2. Прапорець переривання IF (interrupt enable flag) визначає реакцію мікропроцесора на запити зовнішніх переривань на вході INT. Якщо IF=0, запити переривань нехтуються (переривання замасковані), а якщо IF=1, то переривання дозволяються.

3. Прапорець трасування TF (trap flag) встановлює покроковий режим роботи, якщо TF=1. Такий режим застосовується при налагодженні програм.

© 2013 wikipage.com.ua - Дякуємо за посилання на wikipage.com.ua | Контакти