
- •Архітектура і система команд мікропроцесорів
- •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 недопустиме ім’я регістра
Формування фізичного адреса в реальному режимі
В реальному режимі механізм адресації має наступні характеристики:
o діапазон зміни фізичного адреса від 0 до 1 Мбайт, це зумовлено тим, що шина адреса
i8086 мала 20 ліній;
o максимальний розмір сегмента 216 - 1 = 64 Кбайт. Це пояснюється 16-розрядною архітектурою i8086;
o для звернення до конкретного адреса ОП потрібно визначити адрес сегмента і зміщення. Зміщення зберігається в одному із 16-розрядних сегментних регістрів. Для адресації пам’яті 1 Мбайт необхідний 20 бітний адрес. Його отримують апаратним зсувом вліво на 4 розряди значення сегментного регістра. Зміщення являє собою 16-бітне значення, що міститься явно в команді або неявно у одному із регістрів загального призначення.
Усунення невідповідності між розміром шини i486, Pentium (32 біти) і 20-бітним значенням фізичного адресу у реальному режимі досягається шляхом недоступності старших 12 біт шини адреса. Механізм формування фізичного адреса в реальному режимі показаний на рис. 1.5. Недоліки такої організації пам’яті:
o сегменти безконтрольно розміщуються з любого адресу кратного 16 (так як їх вміст зсовують на 4 розряди);
o сегменти мають максимальний розмір 64 Кбайт; o сегменти можуть перекриватися із другими сегментами. Вказані недоліки були усунуті у захищеному режимі.
Рис. 1.5. Механізм формування фізичного адреса в реальному режимі
Типи даних
Типи даних розглядуються з двох точок зору:
o розмірності; o логічної інтерпретації.
З точки зору розмірності МП підтримує наступні типи даних (рис 1.6).
Рис. 1.6. Основні типи даних
Байт – вісім послідовних бітів, пронумерованих від 0 до 7. Біт 0 є самим молодшим.
Слово – послідовність із двох байтів, що мають послідовні адреси. Розмір слова – 16 біт. Біти нумеруються від 0 до 15. Байт з нульовим бітом називається молодшим байтом, байт з 15 бітом
– старшим байтом. МП Intel мають важливу особливість – молодший байт завжди зберігається по молодшому адресу. Адресом слова вважається адрес його молодшого байта. Адрес старшого байту може бути використаний для доступу до старшої половини слова.
Подвійне слово – послідовність із чотирьох байтів (32 біти), розміщеним по послідовних адресах. Біти нумеруються від 0 до 31. Слово, з нульовим бітом називається молодшим словом, а слово з 31 бітом – старшим словом. Адрес старшого слова може бути використаний для доступу до старшої половини подвійного слова.
Збільшене у четверо слово - послідовність із восьми байтів (64 біти), розміщеним по послідовних адресах. Біти нумеруються від 0 до 63. Подвійне слово, з нульовим бітом називається молодшим подвійним словом, а слово з 63 бітом – старшим подвійним словом. Адрес старшого подвійного слова може бути використаний для доступу до старшої половини збільшеного у четверо слова.
128-бітний упакований тип даних. Цей тип даних появився у МП Pentuim III.
Логічні типи даних показані на рис. 1.7.
Рис.1.7. Логічні типи даних
o Цілий тип із знаком – двійкове значення із знаком розміром 8, 16, 32 біти. Знак у двійковому числі міститься у 7, 15, 31 біті відповідно. Нуль в цих бітах відповідає додатному числу, а одиниця – від’ємному числу. Від’ємні числа подаються у додатковому коді. Числові діапазони для цього типу даних наступні:
8-розрядне ціле – від –128 до +127;
16-розрядне ціле – від –32768 до +32767;
32-розрядне ціле – від –231 до +231-1.
o Цілий тип без знаку – двійкове значення без знаку розміром 8, 16, 32 біти. Числові діапазони для цього типу даних наступні:
байт – від 0 до 255;
слово – від 0 до 65535;
подвійне слово – від 0 до +232-1.
Вказівник на пам’ять буває двох типів.
Ближній тип – 32-розрядний логічний адрес, що являє зміщення в байтах від початку сегмента. Ці вказівники можуть використовуватися у суцільній (плоскій) моделі пам’яті, де сегментні складові однакові.
Дальній вказівник - 48-розрядний логічний адрес, що складається із двох частин: 16-розрядної сегментної частини (селектора) і 32-розрядного зміщення.
Ланцюжок – неперервний набір байтів, слів або подвійних слів максимальною довжиною до 4 Гбайт.
Бітове поле – послідовність бітів, де кожний біт незалежний і розглядується як окрема змінна. Бітове поле може починатися з любого біта любого байта і містити до 32 біти.
Неупакований двійково-десятковий тип – байтове подання десяткової цифри від 0 до 9. Неупаковані десяткові числа зберігаються як байтові значення без знаку по одній цифрі у байті. Значення цифри визначається молодшим півбайтом.
Упакований двійково-десятковий тип – являє собою упаковане подання двох десяткових чисед від 0 до 9 в одному байті. Кожна цифра зберігається у своєму півбайті. Цифра у старшому півбайті (біти 4-7) є старшою.
Типи даних з плаваючою крапкою. Це типи даних співпроцесора. Вони не сумісні з типами даних цілочисельних пристроїв.
Типи даних MMX-розширення (Pentium MMX/II). Сукупність упакованих цілочисельних елементів.
Типи даних MMX--розширення (Pentium III). Сукупність упакованих елементів з плаваючою крапкою фіксованого розміру.