Доповідь - Мікропроцесори 80286 та 80386 серії iX86 фірми Intel
Химия

Доповідь — Мікропроцесори 80286 та 80386 серії iX86 фірми Intel


Завантажити доповідь: Мікропроцесори 80286 та 80386 серії iX86 фірми Intel

ПРОЦЕСОР 80286

Процесор 80286 був першим процесором серії iAPx86, який дозволив усунути обмеження пам’яті в 1 мегабайт і підтримував також захист пам’яті та віртуальну пам’ять. Процесор 80286 підтримує всі інструкції процесора 80186 і дозволяє використовувати додаткові інструкції, що забезпечують управління пам’яттю з розвиненою архітектурою.

Процесор 80286 має два режими операцій: реальний та захищений режим. Робота процесора 80286 у реальному режимі практично аналогічна роботі процесора 80286 (він забезпечує той же набір інструкцій, що процесор 80186).

Засоби керування пам’яттю у процесорі 80286 доступні лише у захищеному режимі. І тільки в цьому режимі можна одночасно запустити на виконання завдань, що кілька не впливають один на одного. При цьому можна адресуватися пам’яті, об’єм якої перевищує 1 мегабайт.

Для роботи в захищеному режимі у процесорі 80286 використовуються такі інструкції:

        CLTS    LIDT    LMSW
LGDT LLDT LTR

Ці інструкції процесора 80286 призначені лише для використання операційною системою. У прикладних програмах немає потреби (і можливості) використовувати інструкції захищеного режиму.

У процесорі 80286 введені введені два додаткові стани в регістрі прапорів: біт вкладеної задачі та поле введення-виведення привілейованого рівня. Як і інструкції захищеного режиму, обидва біти призначені тільки для використання в системному програмному забезпеченні, тому прикладні програмісти не повинні з ними працювати. Процесор 80286 також має кілька нових регістрів, з якими можна працювати тільки за допомогою інструкцій захищеного режиму. Це регістр завдання, регістр слова стану машини та регістр таблиці глобальних дескрипторів.

У Турбо Асемблері дозволити асемблювання за допомогою інструкцій процесора 80286 (незахищений режим) можна за допомогою директиви .286. Підтримка інструкцій захищеного режиму 80286 процесора дозволяється за директивою .286Р.

ПРОЦЕСОР 80386

Процесор 80386 забезпечує нові та розширені інструкції, розширений набір 32-розрядних регістрів, лінійні сегменти розміром до 4 гігабайт та можливість емулювати одночасну роботу кількох процесорів 8086, швидкі зрушення та циклічні зрушення, сторінкову пам’ять.

Як і процесор 80286, процесор 80386 має два типи інструкцій — привілейовані та непривілейовані. Непривілейовані вказівки може виконувати будь-яка програма. Однак, привілейовані інструкції може виконувати лише програма, що виконується на поточному рівні привілеїв 0 (найбільш привілейований рівень). Привілейовані інструкції процесора 80386 є розширенням безлічі привілейованих інструкцій процесора 80286 (інструкції захищеного режиму) і також призначені тільки для використання операційною системою.

Підтримка непривілейованих інструкцій процесора 80386 дозволяється за директивою .386. Директива .386Р дозволяє підтримувати привілейовані інструкції процесора 80386.

Нові типи сегментів

Можливість процесора 80386 підтримувати сегменти розміром 64К (як у процесорі 80286) або лінійні сегменти до 4 гігабайт зажадала двох нових типів сегментів — USE16 та USE32.

При посиланні на сегмент розміром 64К 16-розрядне зсув може зберігатися або в базовому або індексному регістрі (BX, SI, DI або BP), або використовуватися як безпосереднє зміщення. У цьому режимі працює процесор 80286 (8086). У процесорі 80386 сегментів, що мають максимальний розмір 64К, дається тип використання USE16.

Для посилання на будь-яку комірку в 4 гігабайтовому сегменті потрібно використовувати 32-розрядне зміщення записане в будь-якому з 32-розрядних регістрів або безпосередньо вказується. Сегментам процесора 80386, які мають максимальну довжину 4 гігабайти, дається тип USE32. Процесор 80386 дозволяє використовувати як базовий регістр або індексний регістр всі вісім 32-розрядних загальних регістрів (EAX, EBX, ECX, EDX, ESI, EDI, EBP і ESP).

Нові регістри

У процесорі 80386 загальні регістри, регістр прапорів та покажчик інструкцій процесора 8086 збільшені за розміром до 32 біт, крім того додані два нових сегментних регістра.

          31                16 15                 0
          --------------------T---------T---------¬-¬
          ¦                   ¦   AH    ¦   AL    ¦ ¦
  EAX     ¦###################+---------+---------+ ¦
          ¦                   ¦        AX         ¦ ¦
          L-------------------+-------------------- ¦
          --------------------T---------T---------¬ ¦
          ¦                   ¦   BH    ¦   BL    ¦ ¦
  EBX     ¦###################+---------+---------+ ¦
          ¦                   ¦        BX         ¦ ¦
          L-------------------+-------------------- ¦
          --------------------T---------T---------¬ ¦
          ¦                   ¦   CH    ¦   CL    ¦ ¦
  ECX     ¦###################+---------+---------+ ¦
          ¦                   ¦        CX         ¦ ¦
          L-------------------+-------------------- ¦
          --------------------T---------T---------¬ ¦
          ¦                   ¦   DH    ¦   DL    ¦ ¦
  EDX     ¦###################+---------+---------+ ¦  Общие
          ¦                   ¦        DX         ¦ ¦ регистры
          L-------------------+-------------------- ¦
          --------------------T-------------------¬ ¦
  ESI     ¦###################¦        SI         ¦ ¦
          L-------------------+-------------------- ¦
          --------------------T-------------------¬ ¦
  EDI     ¦###################¦        DI         ¦ ¦
          L-------------------+-------------------- ¦
          --------------------T-------------------¬ ¦
  EBP     ¦###################¦        BP         ¦ ¦
          L-------------------+-------------------- ¦
          --------------------T-------------------¬ ¦
  ESP     ¦###################¦        SP         ¦ ¦
          L-------------------+----------------------

          --------------------T-------------------¬ Указатель
  EIP     ¦###################¦        IP         ¦ инструкций
          L-------------------+--------------------

          --------------------T-------------------¬ Регистр
  EFLAGS  ¦###################¦     FLAGS         ¦ флагов
          L-------------------+--------------------
                              15                  0
                              --------------------¬-¬
                       CS     ¦                   ¦ ¦
                              L-------------------- ¦
                              --------------------¬ ¦
                       DS     ¦                   ¦ ¦
                              L-------------------- ¦
                              --------------------¬ ¦
                       DS     ¦                   ¦ ¦
                              L-------------------- ¦
                              --------------------¬ ¦ Cегментные
                       ES     ¦                   ¦ ¦ регистры
                              L-------------------- ¦
                              --------------------¬ ¦
                       FS     ¦###################¦ ¦
                              L-------------------- ¦
                              --------------------¬ ¦
                       GS     ¦###################¦ ¦
                              L-------------------- ¦
                              --------------------¬ ¦
                       SS     ¦                   ¦ ¦
                              L----------------------
                              15                  0

32-розрядні загальні регістри

32-розрядні регістри загального призначення називаються EAX, EBX, ECX, EDX, ESI, EDI, EBP та ESP. Молодші 16 біт цих регістрів утворюють безліч 16-розрядних регістрів процесора 8086, які нам вже добре знайомі. Наприклад, молодші 16 бітів регістру EAX є регістром AX. Аналогічно, молодші 8 бітів регістру EAX є регістр AL. В результаті до різних частин регістру EAX можна тепер звертатися за допомогою чотирьох різних імен: 32-бітовий регістр EAX, 16-бітовий регістр AX і 8-бітовий регістр AH і AL. Те саме стосується регістрів EBX, ECX і EDX.

При зверненні до 32-розрядних регістрів є лише один невеликий недолік: неможливо безпосередньо використовувати старші 16 бітів 32-розрядного регістру, як 16-розрядний регістр. Якщо ви хочете використовувати старші 8 бітів регістру AX, можна просто послатися на регістр AH, а якщо ви хочете використовувати молодші 16 бітів регістру ESI, як регістр, то можна просто посилатися на SI. Однак немає еквівалентного способу посилатися, скажімо, на старші 16 бітів, наприклад регістру EAX.

Щоб отримати доступ до старших 16 біт 32-розрядного регістру, можна просто виконати циклічний зсув 16 бітів у будь-якому напрямку, звернутися з молодшим 16 біт регістру і знову виконати для регістру циклічний зсув на 16.

32-розрядний регістр прапорів

Молодше слово регістру прапорів процесора 80386 ідентичне регістру прапорів процесора 8086. Старші 16 біт регістру прапорів процесора 8086 містить два нових прапори. Один з цих нових прапорів показує, чи працює зараз процесор 80386 як віртуальний процесор 8086, а інший прапор призначений для використання при розробці засобів налагодження. Прикладним програмним забезпеченням ці прапори зазвичай не використовуються.

32-розрядний покажчик інструкцій

Покажчик інструкцій процесора 80386 має розмір 32 біти, що відрізняється від 16-бітового покажчика інструкцій процесора 8086. Цей розширений покажчик інструкцій підтримує сегменти коду розміром до 4 гігабайт.

Нові сегментні регістри

У процесорі 8086 до чотирьох сегментних регістрів, що підтримуються в процесорі 8086, додані два нових сегментних регістра — FS і GS. Ці два нові регістри не призначені для певної функції, і жодна інструкція або режим адресації за замовчуванням їх не використовує. У результаті використання регістрів FS і GS є обов’язковим, але може бути зручним при зверненні до даних у кількох сегментах відразу.

Регістри FS і GS використовуються так само, як у несторових інструкціях використовується регістр ES: за допомогою префікса перевизначення сегмента.

Нові режими адресації

Процесор 80386 підтримує всі режими адресації процесорів 8086, 80186 та 80286 та дозволяє також використовувати нові режими адресації. Як базовий регістр можна використовувати будь-який з восьми 32-розрядних загальних регістрів, а як індексний регістр — будь-який з 8 32-розрядних загальних регістрів, крім регістра SP.

При обчисленні адреси пам’яті індексний регістр можна множити на 2, 4 або 8. Для цього після індексного регістру просто міститься *2, *4 або *8 (це засіб називається індексним масштабуванням). Наприклад:

	 mov	 ebx,8
mov eax,[DwordTable+ebx*4]

Індексне масштабування може бути надзвичайно корисним при доступі до елементів, як до масивів слів, подвійних слів або четверних слів.

Якщо адресації до пам’яті використовується єдиний регістр, цей регістр завжди вважається базовим. Якщо для адресації до пам’яті використовуються два регістри, то лівий регістр у квадратних дужках вважається базовим регістром, а самий правий регістр — індексним. Якщо ж, однак, з одним або двома регістрами в квадратних дужках вказується масштабування, то регістр, що масштабується, завжди розглядається, як індексний регістр.

Питання, який із регістрів є базовим, важливий, оскільки за умовчанням базовий регістр управляє сегментом, який робиться посилання при цьому зверненні до пам’яті. Доступ до пам’яті, який здійснюється за допомогою використання регістрів EBP і ESP як базових, призводить до посилання на сегмент, на який вказує регістр SS, а доступ до пам’яті, при якому як базові використовуються регістри EAX, EBX, ECX, EDX, ESI або EDI призводить до посилання сегмент, який вказує регістр DS.

Нові режими адресації процесора 80386 працюють тільки з 32-розрядними регістрами адресації пам’яті. 16-розрядні регістри можна використовувати лише для обмеженого доступу до пам’яті, так само, як у процесорі 8086.

© Реферат плюс



Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *