Процессоры. Система команд ЭВМ. Устройства управления. Организация внутрипроцессорных систем ввода-вывода информации, страница 6

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

Наиболее простым способом указания адреса является включение его в состав (структуру) команды. Но обычно весьма удобными и эффективными являются «манипуляции» адресом, имеющие, в основном, следующие цели:

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

-  допустить работу с адресами в форме, наиболее подходящей для таких широко применяемых структур данных, как стеки и одномерные массивы;

-  указывать полный адрес памяти наименьшим количеством разрядов (делать команду короче);

-  вычислять адреса относительного местоположения команды, чтобы обеспечить загрузку программы в любую область памяти без изменения программы.

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

<120>

Необходимо различать понятия «адресный код» и «исполнительный адрес».

Адресный код (Ак) – это тот код, который содержится в адресной части команды. Исполнительным же адресом (Аи) является тот фактический адрес (номер) ячейки ОЗУ, в которой размещаются данные, над которыми и выполняется заданное кодом операции преобразование. Можно несколько абстрактно записать:

Аи = F ( Ак ).

Последнее выражение справедливо и для команд передачи управления. В этом случае по исполнительному адресу в ЗУ размещается фактический адрес передачи управления.

Операнд является содержимым некоторой ячейки с исполнительным адресом:

                                                            О = < Аи >.

В настоящее время в ЭВМ имеется большой набор типов адресации.

Причем существует определенный разнобой в наименованиях этих типов. Попытаемся в них разобраться.

Прежде всего, выделяют два основных принципа адресации: прямой и косвенный.

При прямом принципе адресации исполнительный адрес берется непосредственно из команды, либо вычисляется с использованием значения, указанного в команде, и содержимого какого-либо регистра СОЗУ (ячейки ОЗУ). Прямой адрес может быть «неполным».

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

<121>

Существующие типы адресации и их характеристики:

1)  Абсолютная (иногда ее и называют прямой). Это самая простая и понятная, так как

                                                                         Аи = Ак.

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

 Рис. 3.1.3.01.

2)  Регистровая (абсолютная регистровая). Операнд хранится в одном из регистров СОЗУ; обычно в этом случае адрес (номер) регистра входит в КОП, а иногда вводится и в аббревиатуру команды.

             Рис. 3.1.3.02.