Индексные методы адресации.

Система команд и методы адресации

Способы адресации. МК выполняет набор операций над операндами, размещенными в регистрах A, X и памяти. Команды имеют длину от 1 до 4 байтов. Для выборки операнда используются следующие способы адресации.

Регистровая (операнд располагается в регистре A или X).

INCA;А+1→А

Непосредственная (8-разрядный операнд задается во втором байте команды).

Пример: сложить непосредственные данные #$03 и #$F1

LDA #$03;

ADD #$F1;

LDHX #$F100.

Прямая (8- или 16-разрядный адрес операнда задается во втором и третьем байте команды). При прямой адресации с 8-разрядным адресом обращение возможно только к 256 начальным позициям адресного пространства, в котором располагаются регистры интерфейсных и периферийных модулей и часть ОЗУ.

укороченная:

ADD $31; ячейка (31) + (А) → А, работают с адресами (00-FF);

расширенная:

LDX $01E1; из ячейки с адр. $01E1 переслать информ. в регистр Х.

 

- индексная (адресом операнда служит содержимое регистра H:X) LDA ,Х; Команда однобайтовая, адрес находится в HX.

- индексная со смещением в один байт(адрес операнда образуется сложением содержимого регистра H:X и 8-разрядного смещения, заданного во втором байте.

INC $D8,X; увеличивается на 1 содержимое ячейки памяти, адрес ;которой получается сложением содержимого Н:Х и D8. При ;индексной адресации смещение является числом без знака.

- индексная со смещением в два байта(адрес операнда образуется сложением содержимого регистра H:X и 16-разрядного смещения, заданного во втором и третьем байте команды); 3 байта .

ADD $0200, X; ((Адрес ячейки = (HX+0200))

 

Индексная адресация и прямая адресация с 16-разрядным адресом позволяют обращаться к любой позиции адресного пространства, однако при этом необходимо, чтобы значение адреса не превышало $FFFF.

 

- индексная с пост - инкрементом(используется только в командах MOV и CBEQ - адресом операнда служит содержимое регистра

H:X, которое после выполнения команды автоматически увеличивается на 1);

MOV $68, X+; записать данные из ячейки пам. с адресом $68 в яч. ;памяти, адрес которой нах-ся в Н:Х, затем увеличить на 1 адрес в Х.

- индексная со смещением в один байт и пост-инкрементом(используется только в команде CBEQ - адрес операнда образуется сложением содержимого регистра H:X и 8-разрядного смещения, заданного во втором байте команды, после выполнения команды содержимое регистра H:X автоматически увеличивается на 1);

 

CBEQ $80, X+, m1; Сравнить А и содержимое ячейки памяти, адрес ;которой (HX )+128 и отправить по метке m1 в случае равенства. ;Увеличить содержимое индексного регистра на единицу.

 

- индексная по указателю стека со смещением(адрес операнда образуется сложением содержимого регистра SP и 8- или 16-разрядного смещения, заданного во втором и третьем байте команды); 3-4 байта,

 

LDA $80, SP;

LDA $01FF,SP;

 

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

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

BCS M2; перейти по метке М2, если бит С установлен,

;(PC) + 2 + М2.