Непосредственная адресация
При непосредственной адресации (НА) в адресном поле команды вместо адреса содержится непосредственно сам операнд (рис. 9.7). Этот способ может применяться при выполнении арифметических операций, операций сравнения, а также для загрузки констант в регистры.
Рис. 9.7. Непосредственная адресация
Когда операндом является число, оно обычно представляется в дополнительном коде. При записи в регистр, имеющий разрядность, превышающую длину непосредственного операнда, операнд размещается в младшей части регистра, а оставшиеся свободными позиции заполняются значением знакового бита операнда.
Помимо того, что в адресном поле могут быть указаны только константы, еще одним недостатком данного способа адресации является то, что размер непосредственного операнда ограничен длиной адресного поля команды, которое в шинстве случаев меньше длины машинного слова.
В 50-60% команд с непосредственной адресацией длина операнда не ет 8 бит, а в 75-80% - 16 бит. Таким образом, в подавляющем числе случаев шестнадцати разрядов вполне достаточно, хотя для вычисления адресов могут потребоваться и более длинные константы.
Непосредственная адресация сокращает время выполнения команды, так как не требуется обращение к памяти за операндом. Кроме того, экономится память, поскольку отпадает необходимость в ячейке для хранения операнда. В плане эффективности этот способ можно считать «идеальным», и его можно рекомендовать к использованию во всех ситуациях, когда тому не препятствуют определенные ограничения.
Прямая адресация
При прямой или абсолютной адресации (ПА) адресный код прямо указывает номер ячейки памяти, к которой производится обращение (рис. 9.10.), то есть адресный код совпадает с исполнительным адресом.
Рис. 9.10. Прямая адресация
При всей простоте использования способ имеет существенный недостаток - ограниченный размер адресного пространства, так как для адресации к памяти большой емкости нужно «длинное» адресное поле. Однако более существенным несовершенством можно считать то, что адрес, указанный в команде, не может быть изменен в процессе вычислений (во всяком случае, такое изменение не рекомендуется) . Это ограничивает возможности по произвольному размещению программы в памяти.
Дата добавления: 2017-05-02; просмотров: 1619;