- •Архітектура і система команд мікропроцесорів
- •1. Архітектура еом
- •1. 1. Поняття про архітектуру еом
- •1.2. Програмна модель мікропроцесора Intel Pentium III
- •Сегментні регістри
- •Регістри стану і керування
- •1.4. Організація пам’яті
- •Сегментована модель пам’яті
- •Формування фізичного адреса в реальному режимі
- •Типи даних
- •Формат команд
- •Типи переривань
- •Структура програми на асемблері
- •Синтаксис асемблера
- •Директиви сегментації
- •Прості типи даних
- •Системи числення
- •Двійкова система числення
- •Шістнадцяткова система числення
- •Перевод із десяткової і шістнадцяткової системи у двійкову
- •Перевод із десяткової і двійкової у шістнадцяткову систему
- •Числа із знаком
- •Структура машинної команди
- •Способи задання операндів
- •Адресація пам’яті
- •Функціональна класифікація машинних команд
- •Команди обміну даними
- •Команди пересилання даних
- •Ввід-вивід в порт
- •Робота з адресами і вказівниками
- •Перетворення даних
- •Робота із стеком
- •Арифметичні цілочисельні команди
- •Цілі двійкові числа
- •Додавання двійкових чисел без знаку
- •Додавання двійкових чисел із знаком
- •Віднімання двійкових чисел без знаку
- •Віднімання двійкових чисел із знаком
- •Множення двійкових чисел без знаку
- •Множення двійкових чисел із знаком
- •Ділення двійкових чисел без знаку
- •Ділення двійкових чисел із знаком
- •Команди перетворення типів
- •4.2. Десяткові числа
- •Неупаковані bcd-числа
- •Упаковані bcd-числа
- •Логічні команди
- •Логічні команди
- •Команди зсуву
- •Лінійний зсув
- •Циклічний зсув
- •Додаткові команди зсуву
- •Команди передачі керування
- •Команди безумовного переходу;
- •Команди безумовного переходу
- •Процедури
- •Умовні переходи
- •Команда порівняння cmp
- •Команди умовного переходу і прапори
- •Команди умовного переходу і регістр ecxlcx
- •6.4. Організація циклів
- •Ланцюжкові команди
- •Пересилання ланцюжків
- •Порівняння ланцюжків
- •Сканування ланцюжків
- •Завантаження ланцюжків
- •Формування ланцюжків
- •Ввід-вивід елементів у порт
- •Складні структури даних
- •Доступ до елементів масиву
- •Двомірні масиви
- •8.2. Структури
- •Описання шаблона структури
- •Визначення даних з типом структури
- •Методи роботи із структурою
- •Об’єднання
- •Визначення екземпляру запису
- •Робота з записами
- •Макрозасоби мови асемблера
- •Макрокоманди
- •Макродирективи
- •Директиви while і rept
- •Директиви irp і irpc
- •Директиви умовної компіляції
- •Директиви компіляції по умові
- •Директиви if і ife
- •Директиви ifdef і ifndef
- •Директиви ifb і ifnb
- •Директиви ifidn, ifidni, ifdif і ifdifi
- •9.4. Директиви генерації помилок
- •%Out недопустиме ім’я регістра
1.2. Програмна модель мікропроцесора Intel Pentium III
Люба програма, що виконується отримує у своє розпорядження певний набір ресурсів МП. Ці ресурси необхідні для виконання і зберігання в пам’яті команд програми, даних і інформації про поточний стан програми і МП. Набір цих ресурсів складає програмну модель
МП. На рис. 1.2 наведено програмну модель МП Pentium III. Програмні моделі більш ранніх МП (i486, Pentium) відрізняються меншим розміром адресованого простору ОП (232-1, так як розрядність шини адреса складала 32 біти) і відсутністю деяких груп регістрів.
Таким чином програмну модель МП Pentium III складають:
o простір адресованої пам’яті до 236-1 байт;
o набір регістрів для зберігання даних загального призначення;
o набір сегментних регістрів;
o набір регістрів стану і керування;
o набір регістрів пристрою обчислень з плаваючою крапкою (співпроцесора);
o набір регістрів цілочисельного ММХ-розширення, що відображаються на регістри співпроцесора (вперше появились в Pentium MMX);
o набір регістрів ММХ-розширення з плаваючою крапкою (вперше появились в
Pentium III);
o програмний стек. Це спеціальна інформаційна структура, робота з якою передбачена на рівні машинних команд.
Рис. 1.2. Програмна модель МП Intel Pentium III
o esp/sp (Stack Pointer register) – регістр вказівника стека. Містить вказівник вершини стека в поточному сегменті стека;
o ebp/bp (Base pointer register) – регістр вказівника бази кадру стека. Призначений для організації довільного доступу до даних всередині стека.
Проте на практиці більшість із цих регістрів може використовуватися для зберігання операндів у любих комбінаціях.
Сегментні регістри
МП апаратно підтримує структурну організацію програми у вигляді трьох частин, які називають сегментами. Така організація пам’яті називається сегментною. Для того щоб вказувати на сегменти, до яких програма має доступ в конкретний момент часу, використовуються шість сегментних регістрів cs, ss, ds, es, gs, fs. МП підтримує наступні типи сегментів:
Сегмент кода. Містить команди програми. Для доступу до цього сегмента служить регістр cs (code segment registr) – сегментний регістр коду. Він містить адрес сегмента з машинними командами, до якого має доступ МП.
Сегмент даних. Містить оброблювані програмою дані. Для доступу до цього сегмента служить регістр ds (data segment registr) – сегментний регістр даних, який зберігає адрес сегмента даних поточної програми.
Сегмент стека. Цей сегмент являє собою область пам’яті, що називається стеком. Роботу із стеком МП організує по принципу: останній записаний елемент вибирається першим. Для доступу до цього сегменту служить регістр ss (stack segment register) – сегментний регістр стека.
Додатковий сегмент даних. Неявно припускається, що всі оброблювані дані розміщені в сегменті даних, адрес якого зберігається в сегментному регістрі ds. Якщо програмі недостатньо одного сегмента даних, то вона може використати ще три сегменти даних, але їх адреси треба вказати явно з допомогою префіксів перевизначення сегментів. Адреси додаткових сегментів повинні міститися в регістрах es, fs, gs (extention data segment registr).
