Адресация команд
Определение. Под адресацией команд понимается способ вычисления следующей команды.
Самым примитивным способом адресации команд является принудительная адресация: адрес следующей команды указывается в самой команде. Недостатки:
1. Неперемещаемость программы.
2. Команды, с точки зрения длины формата, длинные.
При написании программы в адресном поле следующей команды размещается следующий адрес, что неэффективно. Программист, как правило, располагает команды последовательно, в соседних ячейках памяти. Значит, адрес следующей команды вычисляется просто по адресу текущей программы. Для этого в состав процессора вводится специальный узел (программный счетчик СчАК), обеспечивающий последовательную адресацию команд (естественная адресация).
Однако, при осуществлении ветвления, циклических участков программы, подпрограмм, выполняющих обращения к процедурам и подпрограммам, естественный порядок команд нарушается. Для этого используются специальные команды передачи управления. В них адресное поле обязательно.
Способы формирования исполнительных адресов команд различны:
1. Неявная адресация. Адресное поле в команде управления отсутствует. Адрес следующей команды извлекается из фиксированных ячеек или адрес фиксирован. Обычно, неявная адресация используется для фиксированных причин прерывания.
2. Абсолютная адресация. В адресном поле команды передачи управления указывается полный адрес следующей команды.
Более распространены непрямые способы адресации. Обычно применяют три способа:
1. Относительная адресация – адресация относительно текущего адреса. В адресном поле команды задается относительный адрес перехода (рис. 3).
2. Косвенная адресация. В схеме косвенной адресации, память для хранения адресов не применяется. Применяется только косвенная регистровая адресация, где хранят адрес перехода. Косвенная адресация требует короткого адресного поля. Позволяет перемещать программы в любое место памяти.
3. Стековая адресация. Стековая адресация применяется прежде всего при работе с подпрограммами и обслуживании прерываний. Команды передачи управления со стековой адресацией фактически безадресные. Схема работы стека такая же, как и у данных.