![](/user_photo/2706_HbeT2.jpg)
- •2. Структура регістра eflags
- •3. Організація оперативної пам’яті. Сегментована модель оперативної пам’яті. Формування адреси в реальному режимі
- •4. Формати і типи даних. Формат машинних команд. Система переривань
- •5. Десяткова арифметика. Форми зображення десяткових чисел
- •7. Ділення ascii-чисел.
- •6. Директиви сегментації. Директиви proc і endp
- •7. Опис простих типів мовою асемблера
- •10. Синтаксис команд мовою асемблера
- •11. Команди передач даних
- •Xchg ax, data1; (data2) в data1, (ax) – початковий стан
- •12. Стекові передачі даних
- •13. Передачі адресних об’єктів, команди введення-виведення і передачі прапорців
- •14. Команди передачі даних movXx. Команда setCc. Команда xlat
- •15. Команди додавання, віднімання і порівняння
- •Inc reg/mem; Розмір 8/16/32.
- •16. Команди множення і ділення
- •20. Команди логічних операцій. Команди зсувів
- •22. Команди операцій з двійковими ланцюжками
- •23. Команди передачі керування (безумовні переходи)
- •24. Команди умовних переходів і команди керування циклами
- •26. Команди переривань і повернення з переривань
- •Загальні поняття.
- •Використання префіксів в ланцюжкових командах.
- •Команда movs.
- •Команда cmps.
- •Команда scas.
- •Команда lods.
- •Команда stos.
- •Команди введення/виведення ланцюжків.
- •29. Команди керування процесором
- •Команди, які впливають на прапорці.
- •Команди синхронізації.
- •Системні команди
- •31. Формати даних, які підтримуються fpu
- •Параметри для трьох форматів в таблиці
- •32. Програмна модель fpu
- •33. Слово стану sw і слово керування cw пристрою fpu.
- •Відповідність між кодом умови і прапорцями
- •34. Команди передач даних fpu: завантаження, збереження, збереження з вибором зі стека, обміну, завантаження сталих.
- •35. Арифметичні команди fpu: додавання, віднімання, множення, ділення.
- •36. Додаткові арифметичні команди fpu.
- •37. Команди порівняння fpu
- •38. Команди трансцендентних функцій. Алгоритми обчислення значень функцій і та логарифмів за будь-якою основою.
- •39. Команди керування пристроєм fpu
- •40. Спеціальні числові значення та особливі обчислювальні ситуації
3. Організація оперативної пам’яті. Сегментована модель оперативної пам’яті. Формування адреси в реальному режимі
На найнижчому
рівні пам’ять комп’ютера можна
розглядати як набір бітів (двійкових
розрядів), тобто один біт може набувати
значень 0 або 1. Оскільки мікропроцесору
незручно працювати на рівні бітів, тому
реально оперативна пам’ять організована
як набір комірок – байтів. Один байт
складається з восьми бітів. Кожному
байтові відповідає його унікальна
адреса (його номер), яка називається
фізичною адресою. Діапазон значень
фізичних адрес залежить від розрядності
шини адреси мікропроцесора. Для i486
і Pentium
цей діапазон від 0 до
(4
Гбайтів). Для мікропроцесорів сім’ї P6
(Pentium
Pro/II/III)
цей діапазон ширший – від 0 до
(64
Гбайтів). Механізм керування пам’яттю
повністю апаратний, тобто програма не
може сама сформувати фізичну адресу
пам’яті на адресній шині. Цей механізм
ми розглянемо нижче.
Мікропроцесор підтримує дві моделі використання оперативної пам’яті:
-
сегментовану модель. Кожній програмі виділяються неперервні області пам’яті (сегменти), а програма може звертатися тільки до даних, які знаходяться в цих сегментах;
-
сторінкова модель. Оперативна пам’ять розглядається як сукупність блоків фіксованого розміру (4 Кбайтів). Застосування цієї моделі пов’язано з організацією віртуальної пам’яті, що дозволяє операційній системі використовувати для роботи програми простір пам’яті більший, ніж оперативна пам’ять. Для мікропроцесорів i486 і Pentium розмір віртуальної пам’яті може досягати 4 Тбайтів.
Особливості використання і реалізації цих моделей пам’яті залежать від режиму роботи мікропроцесора:
-
реальний режим. Позначатимемо його R-режим. Це режим, в якому працював процесор 8086. Наявність його в i486 і Pentium обумовлено тим, що фірма Intel намагається забезпечити в нових моделях процесорів функціонування програм, розроблених для ранніх моделей мікропроцесорів;
-
захищений режим. Позначатимемо його P-режим. Він дозволяє максимально реалізувати всі нові архітектурні можливості мікропроцесора i486. Програми, розроблені для процесора 8086, не можуть виконуватися в цьому режимі. Одна з причин цього пов’язана саме з особливостями формування фізичної адреси в захищеному режимі;
-
режим віртуального 8086. Перехід в цей режим можливий, якщо процесор уже працює в P-режимі. Основна особливість цього режиму – можливість одночасного виконання декількох програм, розроблених для 8086 процесора;
-
режим системного керування – новий режим роботи мікропроцесора, який вперше появився в мікропроцесорі Pentium. Дозволяє операційній системі використати механізм для виконання машинно-залежних функцій. Наприклад, переведення комп’ютера в режим пониженого енергопостачання, виконання дій, пов’язаних з захистом системи.
Розглянемо тепер поняття сегментованої моделі оперативної пам’яті. Сегментація – механізм адресації, який забезпечує існування декількох незалежних адресних просторів як в рамках однієї задачі, так і в системі загалом для захисту задач від взаємного впливу. Основою сегментації є поняття сегмента – незалежного, підтримуваного на апаратному рівні блоку пам’яті. Кожна програма може складатися в загальному випадку з будь-якої кількості сегментів, але безпосередній доступ вона має тільки до трьох основних сегментів: коду, даних і стека, а також трьох додаткових сегментів даних. Програма не знає, за якими фізичними адресами будуть розташовані її сегменти. Це забезпечує операційна система. За початкові адреси сегментів відповідає вміст відповідних сегментних регістрів. У R-режимі ці адреси операційна система розміщує безпосередньо в сегментні регістри, а в P-режимі вони розміщуються в елементи так званої дескрипторної таблиці, а вміст сегментних регістрів трактується як індекс (селектор) відповідного дескриптора в десктрипторній таблиці. Всередині сегмента програма звертається до адрес відносно початку сегмента лінійно, тобто починаючи з нуля і закінчуючи адресою, яка дорівнює розмірові сегмента. Це зміщення називається ефективною адресою і її ми позначатимемо EA.
Розрізняють три основних моделі оперативної пам’яті:
-
сегментована модель пам’яті реального режиму;
-
сегментована модель пам’яті захищеного режиму;
-
суцільна модель пам’яті захищеного режиму.
Розглянемо формування фізичної адреси в реальному режимі. Фізична адреса подається на шину адреси мікропроцесора. Є ще одна назва цієї адреси: лінійна адреса, яка появилася у зв’язку з наявністю сторінкової моделі організації пам’яті. Ці назви ідентичні (синоніми) тільки коли вимкнено сторінкове перетворення адреси (в реальному режимі сторінкова адресація вимкнена).
В реальному режимі механізм адресації фізичної пам’яті має наступні характеристики:
– діапазон зміни фізичної адреси від 0 до 1 Мбайтів, оскільки шина адреси мала 20 ліній (20 бітів);
-
максимальний розмір сегмента 64 Кбайтів, що пояснюється 16-бітовою архітектурою процесора (16-бітовий регістр може набувати максимального числового значення
, що й визначає величину 64 Кбайтів);
-
для звернення до конкретної фізичної адреси оперативної пам’яті потрібно визначити адресу початку сегмента (сегментна складова) і зміщення всередині сегмента. Ми знаємо, що вміст сегментного регістра – 16-бітове число і максимальне значення цього числа
, тобто адреса початку сегмента може бути тільки в межах від 0 до 64 Кбайтів. В архітектурі процесора враховано цей факт і вважається, що сегментний регістр містить старші 16 розрядів фізичної адреси початку сегмента, а молодші чотири розряди одержуються за допомогою зсуву значення в сегментному регістрі на чотири розряди вліво. Операція зсуву відбувається апаратно і для програмного забезпечення абсолютно прозора і незалежна. Одержане 20-бітове значення виявляється потрібною фізичною адресою, яка є адресою початку сегмента в оперативній пам’яті. Друга складова – 16-бітове зміщення може знаходитися в команді або в загальному регістрі. В мікропроцесорі ці складові додаються і одержується фізична адреса розміром 20 бітів. Значення зміщення можна одержати мінімум з одного і максимум з трьох джерел: значення зміщення в самій команді і з вмісту одного базового регістра та одного індексного регістра.
Така організація пам’яті має певні недоліки:
-
сегменти безконтрольно можуть розміщуватися в оперативній пам’яті з будь-якої адреси, кратної 16 (оскільки вміст сегментного регістра зсувається на 4 біти вліво). Тому програма може звертатися до будь-яких адрес і навіть реально відсутніх;
-
максимальний розмір сегмента 64 Кбайтів, що часто не достатньо;
-
сегменти можуть перекриватися з іншими сегментами, що не завжди бажано.
Ці недоліки відсутні в захищеному режимі.