logo
AOM / Мельник А

3.4.3. Непряма адресація

При непрямій адресації в адресному полі вказується місце розміщення адреси опе-ранда, а виконавча адреса знаходиться наступним чином: А = [А1], де А1 - адреса комірки пам'яті, в якій зберігається виконавча адреса. Адреса А із адресної частини АЧ команди поступає на адресні входи основної пам'яті ОП (рис. 3.26), з відповідної комірки осно-

110

вної пам'яті ОП вибирається адреса операнда, по якій в відповідну комірку або регістр в режимі запису записується операнд із регістра даних РгД, а в режимі зчитування зчиту­ється операнд в регістр даних РгД. Якщо пам'ять може зберігати М слів, то, використо­вуючи двійкове кодування, необхідно mбіт для представлення всіх адрес, де m=]logM[.Значення в дужках означає більше ціле. Для вибірки операнда необхідно здійснити два звернення до ОП.

Для зберігання адрес операндів можна використати регістровий файл процесора (рис. 3.27). Якщо регістровий файл може зберігати N слів, то, використовуючи двійкове кодування, необхідно п біт для представлення непрямої адреси в адресній частині ко­манди, де n =]log N[, а розрядність регістрів буде рівною m =]log M[. Значення в дуж­ках означає більше ціле. Для вибірки операнда необхідно здійснити одне звернення до регістрової пам'яті і одне звернення до основної пам'яті ОП. Такий підхід дозволяє при малій розрядності адресної частини команди п звертатися до пам'яті великої ємності маючи велику розрядність регістрів m.

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

Можливе використання так званої багаторівневої або каскадної непрямої адресації, коли для знаходження ефективної адреси потрібно виконати кілька звернень до пам'яті. Кількість кроків звернення до пам'яті, необхідних при і-рівневій непрямій адресації, на-

111

зивається рангом rі. Розрізняють перший, другий і т. д. ранги. Пряма адресація - це адре­сація нульового рангу (r0).

Непряма адресація служить для зменшення довжини програми з великою кількістю змінних адрес.