Косвенная регистровая адресация

то то же самое, что и косвенная адресация, за исключением того, что адрес команды находится не в ячейке памяти, а в регистре. Типичной одноадресной командой, использующей косвенную адресацию, является команда ADD @ R1, которая складывает содержимое ячейкц памяти, адресуемой содержимым регистра 1, с содержимым аккумулятора. Если регистр I содержит число 1200, команда ADD @ R1 аналогична команде ADD 1200.

Этому типу адресации свойственны достоинства и недостатки обычной косвенной адресации. Регистровая косвенная адресация более быстрая, чем простая косвенная, так как у процессора нет необходимости выбирать из памяти исполнительный адрес. Кроме того, адрес регистра короче адреса памяти. Однако сначала требуется загрузить регистр, и поэтому косвенная адресация предпочтительнее тогда, когда программа многократно использует один и тот же адрес ячейки памяти или соединение адреса. Например, передают массив данных из од-ной области памяти в другую и модифицируют содержимое адресных регистров следующие команды:

LOAD @ R1

STORE @ R2

INCREMENT Rl

INCREMENT R2

Для выполнения этой программы предварительно необходимо загрузить регистры 1 и 2 начальными адресами областей памяти, участвующих в обмене. Регистровая косвенная адресация может заменять простую косвенную адресацию, что иллюстрируется на рис. 3.11. Первый вызов подпрограммы отыскивает наибольший элемент массива,.

Память программы

LOAD Rl, # 1000

CALL SUBROUTINE MAX

LOAD Rl, # 6000

CALL SUBROUTINE MAX

Подпрограмма MAX' определяет наибольший элемент в массиве, который начинает с ячейки, адресуемой содержимым регистра I начинающегося с ячейки памяти 100, тогда как второй вызов подпрограммы определяет наибольший элемент массива, начинающегося с ячейки памяти 6000.