СПОСОБЫ АДРЕСАЦИИ

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

 

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

В этом случае источником или приемником операнда являются ячейки памяти или регистр ППУ.

Адрес ячейки памяти или регистра ППУ записывается в команде:

- двухбайтовая команда – адрес регистра ППУ;

- трехбайтовая команда – адрес ячейки памяти.

 

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

В этом случае источником или приемником операнда является РОН. Номер РОН записывается в коде операции. Команды однобайтовые (номер РОН – 3 разряда).

 

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

В этом случае источником или приемником операнда является ячейка памяти. Команды однобайтовые. Адрес ячейки памяти находится в регистровой паре, например HL. Есть команды инкремента и декремента (±1) содержимого регистровых пар, что позволяет модифицировать адрес.

 

Стековая адресация

В этом случае источником или приемником операнда является ячейка памяти. Команды однобайтовые.

Адрес вершины стека находится в указателе стека SP. При заполнении стек растет в сторону уменьшения адресов, т.е. формируется стек, который ранее был назван перевернутым. Начальный адрес стека устанавливается в указателе стека (SP) программным путем. Уже отмечалось, что SP имеет 16 разрядов, поэтому, если начальным адресом стека выбрать последний адрес всего адресного пространства, то стек может иметь емкость 64 Кбайт.

Обмен со стеком (т.е. загрузка/выгрузка) производится двухбайтовыми словами. При этом загрузка в стек сводится к следующей последовательности действий со стороны МП:

- выполняется операция (SP) = (SP) - 1;

- по новому адресу записывается старший байт вводимого двухбайтового
слова;

- выполняется операция (SP) = (SP) - 1;

- по новому адресу записывается младший байт (второй) вводимого двухбайтового слова.

Выгрузка стека сводится к следующему:

- считывается младший байт по адресу (SP);

- выполняется операция (SP) = (SP) + 1;

- считывается старший байт по новому адресу;

- выполняется операция (SP) = (SP) + 1.

 

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

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

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