11 Способы адресации и система команд avr
ОР – код операции, d – адрес |
|
INC Rd – инкреметировать [Rd]+1Rd DEC Rd – декрементировать [Rd]-1Rd |
ADD Rr, Rd – сложение [Rr]+[Rd] Rd MOV Rr, Rd – перемещение [Rd] Rr |
|
|
Величина n определяет адрес регистра источника или регистра назначения |
16– 19 – регистр источника или регистр приемника |
SBI P, B – загрузить бит из регистра I/O 1I/O (P, B) CBI P, B 0 I/O (P, B) |
SUBI Rd, K – вычесть непоср. [Rd]–[B2] Rd LDI Rd, K – загрузить [B2] Rd |
|
|
5 Косвенная адресация данных со смещением
|
6 Косвенная адресация данных
|
LDD Rd, Y+q –загрузить косвенно со смещ. [M([Y]+q)] Rd |
LD Rd, Y – загрузить косвенно [M([Y])] Rd
|
7 Косвенная адресация данных с преддекрементом
Перед выполнением операции регистры X, Y, Z декрементируются (уменьшается на 1). Содержимое этих регистров определяет адрес. |
8 Косвенная адресация с постинкрементом
Адресом операции является содержимое X, Y, Z, предшествующее инкрементированию (увеличению на 1). |
LD Rd, -Y [Y]-1Y [Y] Rd |
LD Rd, Y+ [Y] Rd [Y]+1Y |
|
|
9 Адресация с использованием команд LPM, ELPM
Младший разряд Z0 дает возможность обращения к старшему и младшему адресным пространствам. Полный адрес указан в адресе ячейки Z0 Z0 = 0 – старший байт Z0 = 1 – младший байт Эта команда использует весь регистр. Адрес указывается в пределах $0000 - $7FFF. |
10 Непосредственная адресация памяти с использованием команд JMP, CALL
Младшие 16 бит задают адрес
|
ELPM – расширенная загрузка из памяти программ в регистр R0 [M([Z]+RAMPZ)] R0 LPM – загрузка в R0 по содержимому рег.Z [Z] R0 |
JMP K - переход [B2] PC CALL K – вызов подпрограммы [K] PC |
|
|
11 Косвенная адресация памяти программ с использованием LJMP и ICALL
Содержимое регистра Z загружается в программный счетчик |
12 Относительная адресация памяти программ типа PJMP, RCALL
Выполнение программы продолжается с адреса PC + k + 1. Значение относительного адреса может быть от -2048 до 2047. |
LIMP – перейти косвенно, используя рег. Z [Z] PC ICALL – вызвать подпрограмму относительно регистра Z [Z] PC |
RJMP K – перейти относительно [PC]+[B2]+1PC RCALL K – вызвать подпрограмму косвенно [PC]+[B2]+1PC |