Види адресації

План

Ціль: Дослідити питання, пов'язані з адресацією вивчити режими адресації.

Тема: Способи адресації

Лекція № 34

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

1. Перелічите відомі вам формати команд.

2. Якими критеріями керуються при розробці форматів.

3. Дайте визначення формату команди.

 

 

1. Види адресації.

2. Порівняння видів адресації.

Розв'язати проблему скорочення розрядності команди тільки за рахунок скорочення кількості, що вказуються в команді операндів і застосування регістрової пам'яті неможливо. Цієї ж мети служить використання різних способів адресації операндів. Крім того, застосування декількох способів адресації підвищує гнучкість програмування, тому що в кожному конкретному випадку дозволяє забезпечити найбільш раціональний спосіб доступу до інформації в пам'яті.

Різні способи адресації базуються на різних механізмах визначення фізичної адреси операнда, тобто адреси фактичного звертання до пам'яті при виконанні команди. Визначення набору способів адресації, що закладаються в систему команд, є одним з найважливіших питань розробки ЕОМ, що суттєво впливають на її архітектуру, обчислювальні можливості, обсяг устаткування, швидкодія й інші характеристики.

До основних способам адресації ставляться наступні: пряма, безпосередня, непряма, відносна.

Пряма адресація. Фізична адреса операнда збігається з кодом в адресній частині команди (рис. 1).Формальне позначення:

Операндi = (Аi),

де Аi – код, що втримується в i-м адресному полі команди.


Рис. 1. Пряма адресація

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

Допускається використання прямої адресації при обігу як до основної, так і до регістрової пам'яті.

Безпосередня адресація. У команді втримується не адреса операнда, а безпосередньо сам операнд (рис. 2):

Операндi= Аi.


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

Безпосередня адресація дозволяє підвищити швидкість виконання операції, тому що в цьому випадку вся команда, включаючи операнд, зчитується з пам'яті одночасно й на час виконання команди зберігається в процесорі в спеціальному регістрі команд ( РК ). Однак при використанні безпосередньої адресації з'являється залежність кодів команд від даних, що вимагає зміни програми при кожній зміні безпосереднього операнда.

Непряма адресація (рис. 3).Адресна частина команди вказує адреса комірки пам'яті (рис. 3,а)або номер регістру (рис. 3,б),у яких утримується адресу операнда:

Операндi = ((Аi)).


Рис. 3. Непряма адресація

Застосування непрямої адресації операнда з оперативної пам'яті при зберіганні його адреси в регістровій пам'яті суттєво скорочує довжину поля адреси, одночасно зберігаючи можливість використовувати для вказівки фізичної адреси повну розрядність регістру.

Недолік цього способу – необхідно додатковий час для читання адреси операнда. Разом з тим він суттєво підвищує гнучкість програмування. Змінюючи вміст комірки пам'яті або регістру, через які здійснюється адресація, можна, не міняючи команди в програмі, обробляти операнды, що зберігаються по різних адресах.

Непряма адресація не застосовується стосовно операндам, що перебувають у регістровій пам'яті.

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

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

Операндi = (базаi + смещениеi).

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

Розглянемо два приклади.

  1. Адресне поле команди складається із двох частин (рис. 4):в одній вказується номер регістру, що зберігає базове значення адреси (початкова адреса сегмента), а в іншому адресному полі задається зсув, що визначає положення гнізда відносно початку сегмента. Саме такий спосіб вистави адреси звичайно й називають відносною адресацією.


Рис. 4. Відносна адресація

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


Рис. 5.Базово-Індексна адресація

Головний недолік відносної адресациии – великий час обчислення фізичної адреси операнда. Але істотна перевага цього способу адресації полягає в можливості створення "переміщуваних" програм – програм, які можна розміщати в різних частинах пам'яті без зміни команд програми. Те ж ставиться до програм, що обробляють по єдиному алгоритму інформацію, розташовану в різних областях ЗУ. У цих випадках досить змінити вміст базової адреси початку команд програми або масиву даних, а не модифікувати самі команди. Із цієї причини відносна адресація полегшує розподіл пам'яті при складанні складних програм і широко використовується при автоматичному розподілі пам'яті в мультипрограмних обчислювальних системах.