Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Антонов О.С., Хiхловська I.В. Обчислювальна тех...doc
Скачиваний:
15
Добавлен:
01.09.2019
Размер:
4.12 Mб
Скачать

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

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

MOV SI, 0002H

MOV AX, [SI+20H]

призведе до пересилання з сегмента даних у регістр АХ двобайтового даного АСВАН з комірок пам'яті з адресами [20Н+2Н] та [20Н+2Н+1Н].

Рисунок 9.7 – Пряме адресування з індексуванням

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

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

MOV AX,[BX+2+DI] ; Пересилання у регістр АХ

; елемента, адреса якого;

MOV AX,[DI+BX+2] ; визначається вмістом регістра DX

; з третього;

MOV AX,[BX+2][DI] ; стовпчика масиву, початкова адреса

; якого;

MOV AX,[BX][DI+2] ; знаходиться у регістрі BX.

Команди з таким типом адресування виконуються найдовше.

Непряме адресування з масштабуванням

У старших моделях мікропроцесорів фірми Intel (І80386 та вищих) використовується також непряме адресування з масштабуванням. Зміщення задається двома 32-розрядними регістрами (базовим та індексним). Вміст індексного регістра множиться на масштабний множник 1,2,4 або 8. Масштабний множник використовується для адресування елементів масивів слів, множник 4 – для обробки подвійних слів, множник 8 – для доступу до елемента масиву 8-байтових даних. Наприклад, команда

MOV EAX, [EBX+4*ECX]

копіює у ЕАХ подвійне слово з сегмента даних, розташоване, починаючи з адреси 4*ЕСХ+ЕВХ.

Контрольні запитання:

  1. З якою метою організується сегментування основної пам’яті МП сім’ї Intel?

  2. Який обсяг пам’яті можуть адресувати МП сім’ї Intel у реальному режимі ?

  3. Як адресується сегмент основної пам’яті МП сім’ї Intel?

  4. Яке призначення за умовчанням має кожний з сегментних регістрів мікропроцесорів фірми Intel?

  5. Як обчислюється фізична адреса комірок основної пам’яті МП сім’ї Intel?

  6. Який спосіб адресування у командах реалізується найшвидше ?

  7. Які особливості має безпосереднє адресування операндів ?

  8. У яких випадках операнд у командах адресується прямо ?

  9. Де вміщується ефективна адреса операнда при непрямому регістровому адресуванні ?

  10. Які способи адресування використовуються для звернення до елементів масиву ?

  11. Які особливості має непряме адресування з масштабуванням ?

  12. Які переваги має сегментування пам’яті порівняно з лінійною організацією?

  13. Які недоліки має сегментування пам’яті?

  1. Виконати фрагмент програми:

  • Задати у пам’яті, починаючи з ефективних адрес 0010Н та 0020Н, два масиви по 10 елементів кожний.

  • Завантажити сегментний регістр даних початковою адресою 7000Н.

  • Завантажити індексний регістр SI константою 04Н.

  • Використовуючи адресування з індексуванням, завантажити регістри DH та СХ третім елементом першого масиву. Вказати вміст регістрів після завантаження.

  • Використовуючи адресування з індексуванням, завантажити регістри CL та DХ другим елементом другого масиву. Вказати вміст регістрів після завантаження.