Индексные методы адресации.
Система команд и методы адресации
Способы адресации. МК выполняет набор операций над операндами, размещенными в регистрах 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.