Cтраница 4
При обращении В JINDER ( A) заносит в ячейку В адрес А. Реализует получение косвенного адреса. [46]
В мини - и микроЭВМ, где оборудование процессора ограничено, применяется автоиндексная адресация, являющаяся развитием косвенной адресации. При автоиндексной адресации косвенный адрес увеличивается или уменьшается до или после выполнения операции с операндом. Этот способ адресации обеспечивает высокую эффективность обработки массивов при небольших аппаратурных затратах на его реализацию, особенно в случае хранения косвенного адреса на внутреннем регистре процессора. Если косвенный адрес увеличивается, то адресация называется автоинкрементной или с авто увеличением, если уменьшается - то автодекрементной или с автоуменьшением. Обычно эти способы согласованы так, чтобы при последовательном применении, например, автодекрементной и автоинкрементной адресации использовался один и тот же операнд. Это требует, чтобы в рассматриваемом случае при автодекрементной адресации сначала происходило уменьшение косвенного адреса, а затем операция, а при автоинкрементной адресации наоборот - сначала операция с операндом, а затем увеличение косвенного адреса. [47]
При косвенной адресации адресная часть команды представляет собой не адрес данных, а адрес ячейки памяти, содержащей адрес данных. Такой адрес называется косвенным адресом, ибо отсылает к данным косвенно. Косвенная адресация не обладает возможностями, присущими модификации, но может служить для получения некоторых из ее результатов. Обычно она тоже требует затрат времени выполнения, так как для получения действительного адреса необходимо дополнительное обращение к памяти. Впрочем, косвенная адресация обходится гораздо дешевле, чем модификация, и поэтому она применяется на многих недорогих ЭВМ. [48]
Косвенный адрес не является исполнительным адресом операнда, а означает адрес ячейки, содержащей другой адрес. Последний может быть исполнительным или еще одним косвенным адресом. [49]
Использование косвенной адресации. [50] |
Когда машина имеет короткое слово и невозможна прямая адресация ко всем ячейкам памяти, тогда в первую очередь следует выполнить косвенную адресацию. Это объясняется тем, что обычно используемое в качестве косвенного адреса слово бывает длиннее, чем адресное поле команды, и поэтому с помощью косвенной адресации можно обратиться в любую область памяти, а затем уже выполнять индексирование. Если же длина слова позволяет адресовать всю память, то предпочтительнее прежде исполнять индексацию, поскольку это облегчает, например, передачу параметров в подпрограмму. [51]
Автоинкрементная и автодекрементная адресации. Поскольку регистровая косвенная адресация требует предварительной загрузки регистра из ОП косвенным адресом, что связано с потерей времени, такой тип адресации особенно эффективен при обработке массива данных, если имеется, механизм автоматического приращения или уменьшения содержимого регистра при каждом обращении к нему, называемый соответственно автоинкрементной и автодекрементной адресацией. В этом случае достаточно 1 раз загрузить в регистр адрес первого обрабатываемого элемента массива, а затем при каждом обращении к регистру в нем в результате инкрементной ( декрементной) процедуры формируется адрес следующего элемента массива. [52]
Совместное использование регистровой прямой и регистровой косвенной адресаций для преодоления ограничений короткого слова команды. [53] |
Автоинкрементная и автодекрементная адресации. Поскольку регистровая косвенная адресация требует предварительной загрузки регистра из ОП косвенным адресом, что связано с потерей времени, такой тип адресации особенно эффективен при обработке массива данных, если имеется механизм автоматического приращения или уменьшения содержимого регистра при каждом обращении к нему, называемый соответственно автоинкрементной и автодекрементной адресацией. В этом случае достаточно один раз загрузить в регистр адрес первого обрабатываемого элемента массива, а затем при каждом обращении к регистру в нем в результате инкремент-ной ( декрементной) процедуры формируется адрес следующего элемента массива. [54]
Здесь стрелка обозначает обращение к памяти по адресу, указанному в начале стрелки. Первое обращение к памяти по адресу Ак может привести к выборке нового косвенного адреса Ак, для обработки которого производятся последующие обращения к памяти до тех пор, пока не будет получен прямой адрес А и по нему - операнд. [55]
Режим адресации с автоматическим увеличением тоже может применяться для манипуляций с регистром, служащим указателем стека. При использовании адресации с автоматическим увеличением сначала содержимое регистра применяется в качестве косвенного адреса данных, после чего оно увеличивается на единицу, если выполняется байтовая команда, и на два, если команда работает со словами. При работе со стеками это дает возможность выбрать что-либо из стека, после чего указатель стека устанавливается так, чтобы он указывал на новую вершину стека. [56]