Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
ОргЭВМ.docx
Скачиваний:
6
Добавлен:
25.09.2019
Размер:
2 Мб
Скачать
☆

Форматы команд

Типовая команда, в общем случае, должна указывать:

• подлежащую выполнению операцию;

• адреса исходных данных (операндов), над которыми выполняется операция;

• адрес, по которому должен быть помещен результат операции.

В соответствии с этим команда состоит из двух частей: операционной и адрес­ной.

Длина команды

где l— количество адресов в команде; RA — количество разрядов для записи i-гo адреса; — разрядность поля кода операции; —разрядность поля способа адресации.

Количество адресов в команде

В «максимальном» варианте необходимо указать три компонента: адрес первого операнда; адрес второго операнда и адрес ячейки; куда заносится результат операции; адрес, указывающий место хранения следующей инструкции. В итоге имеет место четы­рехадресный формат команды. Такой формат поддерживался в ВМ EDVAC, разработанной в 1940-хгодах.

В фон-неймановских ВМ необходимость в четвертом адресе отпадает, поскольку команды располагаются в памяти в порядке их выполнения, и адрес очередной команды может быть получен за счет простого увеличения адреса текущей коман­ды в счетчике команд. Это позволяет перейти к трехадресному формату команды. Требуется только добавить в систему команд ВМ команды, способные изменять порядок вычислений.

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

Команду можно еще более сократить, перейдя к одноадресному формату, что возможно при выделении определенного стандартного места для хранения первого операнда и результата. Обычно для этой цели используется спе­циальный регистр центрального процессора (ЦП), известный под названием ак­кумулятора, поскольку здесь аккумулируется результат.

Время выполнения одной команды складывается из времени выполнения опера­ции и времени обращения к памяти.

Для трехадресной команды последнее суммируется из четырех составляющих времени:

• выборки команды;

• выборки первого операнда;

• выборки второго операнда;

• записи в память результата.

Одноадресная команда требует двух обращений к памяти:

• выборки команды;

• выборки операнда.

Способы адресации операндов

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

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

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

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

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

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

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

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

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

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

Регистровая адресация

Регистровая адресация (РА) напоминает прямую адресацию. Различие состоит в том, что адресное поле инструкции указывает не на ячейку памяти, а на регистр процессор. Идентификатор регистра в дальнейшем будем обозначать буквой R. Обычно размер адресного поля в данном случае составляет три или че­тыре бита, что позволяет указать соответственно на один из 8 или 16 регистров общего назначения (РОН).

Двумя основными преимуществами регистровой адресации являются: корот­кое адресное поле в команде и исключение обращений к памяти. Малое число РОН позволяет сократить длину адресного поля команды. К сожалению, возможности по использованию регистровой адре­сации ограничены малым числом РОН в составе процессора.

Косвенная регистровая адресация

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

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

Адресация со смещением

При адресации со смещением исполнительный адрес формируется в результате суммирования содержимого адресного поля командых содержимым одного или нескольких регистров процессора.

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

Относительная адресация

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

Главное достоинство данного способа адресации состоит в том, что он делает программу перемещаемой в памяти: независимо от текущего расположения программы в адресном пространстве взаимное положе­ние команды и операнда остается неизменным, поэтому адресация операнда оста­ется корректной.