logo
МПТ_L_к

6.4. Способи адресації в мікропроцесорній системі

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

1. При прямій адресації адреса місця, де зберігаються дані, розміщують за кодом операції. Цією адресою може бути № порту пристрою вводу-виводу ( команда 2-во байтова) ; чи № комірки пам”яті ( команда 3-х байтова). Пряма адресація проста, але неекономічна через досить довгі командні слова, що збільшує об’єм пам”яті та час виконання.

Команда порт вводу – виводу

Ст.. байт Код операції → дані

Мол. Байт № порту

Команда Пам”ять

Код операції

Молодша півадреса → Адреса Дані

Старша півадреса.

Н., команда JMP 1000H виконує перехід по адресі 1000Н, задаючи значення адреси пам’яті, а команда OUT 06Н – виводить вмістиме акумулятора в порт за номером 06Н.

2. При регістровій адресації за кодом операції вказують код регістра, де зберігаються дані. В цих командах акумулятор вже зберігає другий операнд бінарних операцій. Код займає 3 розряди для кожного регістра, тому команди роблять однобайтовими і вони виконуються досить швидко. Н., СМР Е – проводить порівняння вмістимого регістра Е з акумулятором. Більшість команд, які використовують регістрову адресацію обробляють байт даних. Але деякі використовують 16-ти бітове значення пари регістрів. Так команда РСНL виконує обмін між вмістимим лічильника команд і вмістимим пари регістрів Н.

3.При непрямій адресації (косвенная адресация) вказують код регістрів, в яких знаходиться адреса комірки пам”яті, яка зберігає дані. Такий спосіб дозволяє компактно адресувати простір пам”яті за допомогою коротких однобайтових команд і використовується часто. Тобто, при цьому способі використовуються дві адреси. Перша адреса надається в команді і являє собою адресу пари регістрів. Але пара регістрів вміщують в собі не операнд, як при явній адресації, а другу адресу, яка є адресою байта даних в пам”яті.

Наприклад, команда MOV M, C пересилає вмістиме регістру С в байт пам’яті за адресою, яка знаходиться в парі регістрів Н (регістри Н та L).

Команда LDAX B – загружає акумулятор байтом даних із пам’яті , адреса якої знаходиться в парі регістрів В (об’єднані регістри В та С).

Команди, які використовують не окремі регістри, а їх пари, при роботі із 16-ти бітними словами, кодують їх так: В=(В,С); D=(D,Е); Н=(Н,L); PSW= (A,F}

4. При безпосередній адресації дані у вигляді 8-ми розрядного двійкового числа безпосередньо розміщуються в другому байті команди. А якщо число має більшу довжину, то і в 2-гому та 3-тьому байтах. При цьому молодші розряди заносяться до 2-го байту, а старші – до 3-го.

Код операції (1-й байт) → Код операції

Дані молодші розряди даних

старші розряди даних

Тобто, при безпосередній адресації операд є частиною виконуваної операції. При її виконанні МП виймає із пам”яті (ОЗП чи ПЗП) перший байт команди , а потім вирішує, чи потрібно виймати наступний байт (2-й чи 3-й). Якщо необхідно, то безпосередній операнд зчитується із одного із внутрішніх регістрів РЗП, і в цьому випадку звертання до пам’яті відсутнє. Всі команди з безпосередньою адресацією , крім команд MVI та LXI, грунтуються на тому, що другий операнд , який використовується в команді, вже знаходиться в акумуляторі і адресується неявно.

В той же час , якщо необхідно загрузити початкове значення покажчика стеку за допомогою команди LXI SP, то це виконується так:

LXP SP, 2500

В цьому випадку ПС загружається значенням 2500 (10). Код 2500(10) є операндом, який адресується безпосередньо.

5. При неявній адресації один із операндів повинен знаходитись у внутрішньому регістрі МП, найчастіше – це акумулятор А. В цьому випадку, адреса одного чи обох операндів задається неявно в самому коді операції. Операція може виконуватись, н., тільки над тим, що вміщується а акумуляторі, і задається самим кодом команди, тому немає необхідності додатково повідомляти його адресу. Н., команда DAA неявно задає акуму-лятор як операнд (провести десяткову коррекцію результату додавання).

6. Є ще змішана адресація. Її використовують ряд команд. Н., CALLкоманда виклику підпрограми об’єднує пряму адресацію та непряму регістрову. Пряма адресація в цій команді показує адресу підпрограми, яка викликається, а непряма регістрова адресація через покажчик стеку надає адресу ОЗП, по якому в пам’ять записується значення лічильника команд (фіксується його значення на момент початку виконання підпрограми у пам’яті стеку).