
Косвенная регистровая адресация
Косвенная
регистровая адресация (КРА)
представляет собой косвенную адресацию,
где исполнительный адрес операнда
хранится не в ячейке основной памяти,
а в регистре процессора. Соответственно,
адресное поле команды указывает не на
ячейку памяти, а на регистр, как показано
на рисунке 2.26.
Рисунок
2.26 – Косвенная регистровая
адресация
Достоинства
и ограничения косвенной регистровой
адресации те же, что и у обычной косвенной
адресации, но благодаря тому, что
косвенный адрес хранится не в памяти,
а в регистре, для доступа к операнду
требуется на одно обращение к памяти
меньше.
Адресация со смещением
При
адресации со смешением исполнительный
адрес формируется в результате
суммирования содержимого адресного
поля команды с содержимым одного или
нескольких регистров процессора.
Адресация
со смещением предполагает,
что адресная часть команды включает в
себя как минимум одно поле (Ак).
В нем содержится константа, смысл которой
в разных вариантах адресации со смешением
может меняться. Константа может
представлять собой некий базовым адрес,
к которому добавляется хранящееся в
регистре смещение. Допустим и прямо
противоположный подход: базовый адрес
находится в регистре процессора, а в
поле Ак указывается
смещение относительно этого адреса. В
некоторых процессорах для реализации
определенных вариантов адресации со
смешением предусмотрены специальные
регистры, например базовый или индексный.
Использование таких регистров
предполагается по умолчанию, поэтому
адресная часть команды содержит только
поле Ак.
Если
же составляющая адреса может располагаться
в произвольном регистре общего назначения,
то для указания конкретного регистра
в команду включается дополнительное
поле R (при составлении адреса более чем
из двух составляющих в команде будет
несколько таких полей). Еще одно поле Я
может появиться в командах, где смещение
перед вычислением исполнительного
адреса умножается на масштабный
коэффициент. Такой коэффициент заносится
в один из РОН, на который и указывает
это дополнительное поле. В наиболее
общем случае адресация со смещением
подразумевает наличие двух адресных
полей: Ак и
R. Общая схема адресации со смещением
представлена на рисунке 2.26.
Рисунок
2.26 –Адресация со смещением
В
рамках адресации со смещением имеется
еще один вариант, при котором исполнительный
адрес вычисляется не суммированием,
аконкатенацией (присоединением)
составляющих адреса. Здесь одна
составляющая представляет собой старшую
часть исполнительного адреса, а вторая
– младшую.
Ниже
рассматриваются основные способы
адресации со смещением, каждый из
которых, впрочем, имеет собственное
название.
Базовая регистровая адресация
В случае базовой регистровой адресации (БРА) регистр, называемый базовым, содержит полноразрядный адрес, а подполе АС, - смешение относительно этого адреса. Ссылка на базовый регистр может быть явной или неявной. В некоторых ЭВМ имеется специальным базовый регистр и его использование является неявным, то есть подполе R в команде отсутствует. Более типичен случаи, когда в роли базового регистра выступает один из регистров общего назначения, тогда его номер явно указывается в подполе R команды. Базовую регистровую адресацию обычно используют для доступа к элементам массива, положение которого в памяти в процессе вычислений может меняться. В базовый регистр заносится начальный адрес массива, а адрес элемента массива указывается в подполе АС команды в виде смещения относительно печатного адреса массива. Достоинство данного способа адресации в том, что смещение имеет меньшую длину, чем полный адрес, и это позволяет сократить длину адресного поля команды. Короткое смешение расширяется до полной длины исполнительного адреса путем добавления слева битов, совпадающих со значением знакового разряда смешения.