то то же самое, что и косвенная адресация, за исключением того, что адрес команды находится не в ячейке памяти, а в регистре. Типичной одноадресной командой, использующей косвенную адресацию, является команда 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.