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

3)  Непосредственная. Операндом является сам адресный код:

                                                О = Ак.

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

             Рис. 3.1.3.03.

4)  Неявная. Адресная часть отсутствует, операнд подразумевается (сравните с безадресной командой, это её частный случай) в какой-либо части МП или компьютера: АЛУ, регистр, шина входа.

      Пересекается с регистровой адресацией, когда в последней номер регистра входит в КОП; но здесь, по-моему, следует различать случаи:

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

            б) когда поле не выделяется (неявная адресация).

<122>

5)  Косвенная регистровая адресация. Используется в той или иной форме во всех современных микро-ЭВМ.

             Рис. 3.1.3.04.

6)  Косвенная абсолютная адресация. Используется при обработке списков, при взаимодействии с подпрограммами и др.

; ;…;

7)  Автоинкрементная. Нужда в ней возникает в связи с необходимостью пошагового просмотра таблиц или списков данных.

Рис. 3.1.3.05.

            На рисунке:  p – шаг инкрементации (он определяется размером операнда).

                                    Ак ≡ Nr;

                                    Аи = < Nr >;  

                                    < Nr > + p  => Nr .

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

            В последнем случае соблюдаются правила:

-  указатель стека всегда указывает на верхушку стека;

-  с уменьшением содержимого указателя стека объем информации в стеке увеличивается.

Именно поэтому вычитание p (размера операнда), в отличие от автоинкрементной адресации, выполняется до использования адреса в качестве исполнительного.

 Рис. 3.1.3.06.

                                    Ак ≡ Nr;

                         < Nr >  -  p  => Nr ;

                              Аи = < Nr >.

9)  Косвенная автоинкрементная (применялась ещё в PDP-11, LSI-11 и наших аналогах СМ-, Электроника 60).

 Рис. 3.1.3.07.

10) Косвенная автодекрементная. См. (8) и (9).

<123>

11) Относительная (адресация по базе).

            Первый вариант:

             Рис. 3.1.3.08.

            Основное удобство – расширение адресного поля. Индексная адресация

является развитием относительной: в команде указан адрес (номер) ячейки, являющейся индексной, хранящей базовый адрес.

            Второй вариант:

             Рис. 3.1.3.09.

            Базовый адрес всегда является полным адресом, а смещение может быть коротким или длинным.

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