Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Федеральное агентство по образованию v2.docx
Скачиваний:
38
Добавлен:
14.09.2019
Размер:
1.53 Mб
Скачать

2.5.1. Непосредственная адресация

При непосредственной адресации (НА) в адресном поле команды вместо адреса содержится непосредственно сам операнд (рис. 15). Этот способ может приме­няться при выполнении арифметических операций, операций сравнения, а также для загрузки констант в регистры.

Когда операндом является число, оно обычно представляется в дополнитель­ном коде. При записи в регистр, имеющий разрядность, превышающую длину не­посредственного операнда, операнд размещается в младшей части регистра, а ос­тавшиеся свободными позиции заполняются значением знакового бита операнда

Помимо того, что в адресном поле могут быть указаны только константы, еще одним недостатком данного способа адресации является то, что размер непосред­ственного операнда ограничен длиной адресного поля команды, которое в боль­шинстве случаев меньше длины машинного слова.

В 50-60% команд с непосредственной адресацией длина операнда не превыша­ет 8 бит, а в 75-80% — 16 бит. Таким образом, в подавляющем числе случаев шест­надцати разрядов вполне достаточно, хотя для вычисления адресов могут потре­боваться и более длинные константы.

Непосредственная адресация сокращает время выполнения команды, так как не требуется обращение к памяти за операндом. Кроме того, экономится память, поскольку отпадает необходимость в ячейке для хранения операнда. В плане эф­фективности этот способ можно считать «идеальным» (СНА = 0, ТНА = 0), и его мож­но рекомендовать к использованию во всех ситуациях, когда тому не препятству­ют вышеупомянутые ограничения.

2.5.2. Прямая адресация

При прямой или абсолютной адресации (ПА) адресный код прямо указывает но­мер ячейки памяти, к которой производится обращение (рис. 22), то есть адресный код совпадает с исполнительным адресом.

Рис. 22. Прямая адресация.

При всей простоте использования способ имеет существенный недостаток — ограниченный размер адресного пространства, так как для адресации к памяти большой емкости нужно «длинное» адресное поле. Однако более существенным несовершенством можно считать то, что адрес, указанный в команде, не может быть изменен в процессе вычислений (во всяком случае, такое изменение не рекомен­дуется). Это ограничивает возможности по произвольному размещению програм­мы в памяти.

Прямую адресацию характеризуют следующие показатели эффективности: СПА = int (log2Ni), TПА = tЗУ, где Ni — количество адресуемых операндов.

2.5.3. Косвенная адресация

Одним из путей преодоления проблем, свойственных прямой адресации, может служить прием, когда с помощью ограниченного адресного поля команды указы­вается адрес ячейки, в свою очередь, содержащей полноразрядный адрес операнда (рис. 23). Этот способ известен как косвенная адресация (КА). Запись (Лк) озна­чает содержимое ячейки, адрес которой указан в скобках.

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

Рис. 23. Косвенная адресация.

Недостатком косвенной адресации является необходимость в двухкратном об­ращении к памяти: сначала для извлечения адреса операнда, а затем для обраще­ния к операнду (ТКА = 2 tЗУ). Сверх того задействуется лишняя ячейка памяти для хранения исполнительного адреса операнда. Способу свойственны следующие за­траты оборудования:

ска = Rяч + int(log2NA) = int(log2(NA + Ni),

где RЯЧ— разрядность ячейки памяти, хранящей исполнительный адрес; NA — ко­личество ячеек для хранения исполнительных адресов; Nt — количество адресуе­мых операндов. Здесь выражение int(log2NA) определяет разрядность сокращен­ного адресного поля команды (обычно NA << Ni).

В качестве варианта косвенной адресации, правда, достаточно редко использу­емого, можно упомянуть многоуровневую или каскадную косвенную адресацию, когда к исполнительному адресу ведет цепочка косвенных адре­сов. В этом случае один из битов в каждом адресе служит признаком косвенной адресации. Состояние бита указывает, является ли содержимое ячейки очередным адресом в цепочке адресов или это уже исполнительный адрес операнда. Особых преимуществ у такого подхода нет, но в некоторых специфических ситуациях он оказывается весьма удобным, например при обработке многомерных массивов. В то же время очевиден и его недостаток — для доступа к операнду требуется три и более обращений к памяти.