Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
МПТ.doc
Скачиваний:
65
Добавлен:
03.11.2018
Размер:
20.52 Mб
Скачать

Режими адресації

Мікропроцесор ВМ86 дозволяє багато способів доступу до операндів. Операнди можуть знаходитися в регістрах, в самих командах, в пам`яті або в портах вводу-виводу.

ВМ 86 має сім груп режимів адресації:

1.Регістрова адресація.

2.Безпосередня адресація.

3.Пряма адресація.

4.Опосередкована адресація.

5.Адресація по базі.

6.Пряма адресація з індексуванням.

7.Адресація по базі з індексуванням.

В таблиці приведені формати операндів мови асемблера для всіх семи режимів адресації.

Таблиця 4.12- Режими адресації мікропроцесора ВМ 86

Режим адресації

Формат операнда

Регістр сегмента

1. Регістровий

2. Безпосередній

3. Прямий

4. Опосередкований регістровий

5. По базі

6. Прямий з індексуванням

7. По базі з індексуванням

Регістр

Дані

Зміщення

Мітка

[BX]

[BP]

[DI]

[SI]

[BX] + зміщення

[BP] + зміщення

[DI] + зміщення [SI] + зміщення

[SI]+зміщення

[BX][SI]+зміщення

[BX] [DI]+зміщення

[BP] [ SI]+зміщення

[BP] [DI]+зміщення

Не використовується

Не використовується

DS

DS

DS

SS

DS

DS

DS

SS

DS

DS

DS

DS

SS

SS

Зауваження:

1. Компонент <зміщення> при адресації по базі з індексуванням є необовязковим.

2. Операнд <регістр> може бути будь-який 8- або 16- бітовий регістр, крім ІР.

3. Операнд <дані> може бути 8- або 16- бітовою константою.

4. Компонент <зміщення> може бути 8- або 16- бітовим зміщенням зі знаком.

5. При роботі зі стрічками регістр DI вказує на сегмент ES.

Розглянемо конкретніше режими адресації.

При регістровій адресації мікропроцесор добуває операнд із регістра (або завантажує його в регістр). Наприклад, команда

MOV AX, CX (CX)  AX

копіює 16-бітове слово із регістра лічильника СХ в акумулятор АХ.

При безпосередній адресації, як операнд-джерело вказують 8- або 16- бітові значення констант. Наприклад, команда

MOV CX, 500

завантажує значення 500 в регістр СХ. Діапазон зміни констант: -для 8-бітових чисел від -128(80Н) до 127(7FH);

- для 16- бітових чисел зі знаком від -32768(8000Н) до 32767(7FFFH).

- для 8- та 16-бітових чисел без знака з діапазоном відповідно до 255 (OFF)H i 65535 (OFFFFH).

Для адресації памяті використовують інші пять режимів адресації.

Пряма адресація

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

MOV AX, TABLE

завантажує вміст комірки памяті TABLE в регістр АХ (рисунок 4.35).

Рисунок 4.35-Пряма адресація Рисунок 4.36-

Опосередкована ре- гістрова адресація

Опосередкована регістрова адресація

При опосередкованій регістровій адресації виконавча адреса операнда міститься в базовому регістрі ВХ, регістрі покажчику бази ВР або індексному регістрі (SI або DI). Опосередковані регістрові операнди потрібно брати в квадратні дужки. Наприклад команда

МОV AX, [BX]

завантажує вміст комірки памяті, адресованої з ВХ (рисунок 4.36).

Рисунок 4.37- Адресація по базі Рисунок 4.38-Пряма

з індексуванням адресація

Адресація по базі

При адресації по базі асемблер вираховує виконавчу адресу сумуванням зміщення з вмістом регістрів ВХ або ВР. Наприклад, команда

MOV AX , [BX] +4

завантажує регістр АХ даними за схемою, приведеною на рисунку 4.36. Асемблер дозволяє вказувати адресований по базі операнд такими способами:

MOV AX, [BP]+4

MOV AX, 4 [BP]

MOV AX, [BP+4].

Ці записи є еквівалентними.

Пряма адресація з індексуванням

При прямій адресації з індексуванням виконавча адреса вираховується як сума зміщення та індексного регістру ( DI або SI).

Наприклад, якщо мітка B_TABLE - є міткою в таблиці слів, то для завантаження в регістр АХ її третього елемента треба виконати таку послідовність команд:

MOV DI, 4

MOV AХ , TABLE [DI].

Алгоритм роботи команди поданий на рисунку 4.37. Таким чином цей тип адресації корисний при роботі з одномірними таблицями.

Адресація по базі з індексуванням

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

Наприклад, нехай ЕОМ слідкує за шістьма запобіжними клапанами на хімічному підприємстві. Вона зчитує їх стан кожні півгодини і запамятовує в комірки памяті. За тиждень ці зчитування утворюють масив, який складається з 336 блоків (48 зчитувань на протязі семи днів) по шість елементів в кожному, а всього-2016 значень.

Якщо початкова адреса масиву записана в ВХ, зміщення блоку (номер зчитування, помножений на 12)- в регістрі DI, а номер клапана заданий в змінній VAL, тоді команда

MOV AX, VAL [BX] [DI]

завантажує потрібне значення стану клапана в регістр АХ.

На рисунку 4.38 зображений процес добування результату третього зчитування (номер 2) для клапана 4 із масиву, в якого зміщення в сегменті даних рівне 100Н.

Рисунок 4.38-Добування елемента двовимірного масиву