Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Лекции РАЗДЕЛ 2.docx
Скачиваний:
65
Добавлен:
18.11.2019
Размер:
3.01 Mб
Скачать

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

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

Код операции

Способ адресации

Непосредственный

операнд

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

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

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

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

Наиболее интенсивно данный вид адресации используется в арифметических операциях и командах сравнения. В то же время загрузка констант в большинстве программ, очевидно, не такая частая операция.

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

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

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

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

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

Прямую адресацию характеризуют следующие показатели эффективности: , - где – количество адресуемых операндов.

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

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

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

Недостатком косвенной адресации является необходимость в двукратном обращении к памяти: сначала для извлечения адреса операнда, а затем для обращения к операнду ( ). Сверх того задействуется лишняя ячейка памяти для хранения исполнительного адреса операнда. Способу свойственны следующие затраты оборудования:

, (2.15)

где – разрядность ячейки памяти, хранящей исполнительный адрес;  – количество ячеек для хранения исполнительных адресов; – количество адресуемых операндов. Здесь выражение определяет разрядность сокращенного адресного поля команды (обычно ).

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

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