;Будем разбираться с косвенной адресацией в AVR,это указатели в Си или как в книжке написано альтернативная адресация
.include "tn2313def.inc"
.list
.def temp=r16
.def count=r17
.cseg
.org 0
ldi temp,ramend
out spl,temp
ldi temp,0x80
out acsr,temp
main: ldi count,6 ;число проходов в цикле
ldi zl,low(memory*2) ;регистр z и есть указатель на mamory т.е. в него
ldi zh,high(memory*2);записываем адрес в SRAM нашего массива байтов умноженного на 2
loop: lpm ;эта комманда загружает то что находится по адресу mamory в регистр R0.
ldi temp,1
add zl,temp ;двигаемся дальше по массиву
dec count ;отнимаем 1 от счетчика
cpi count,0 ;проверяем на 0
brne loop ;если не 0 то проходим цикл есчо раз
ldi count,3 ;способ второй
ldi zl,low(memory*2) ;опять грузим в z адресс начала массива
ldi zh,high(memory*2)
loop1: lpm yl,z+ ;load program memory в регистр yl
lpm yh,z ;ведь z регистр состоит из 2-ух байтов
ldi temp,1
add zl,temp ;увеличиваем на 1 байт адрес массива
dec count ;уже проходим 3 раза по 2 байта
brne loop1
rjmp main
memory: .db 1,2,3,4,5,6 ;это у нас массив байтов с начальным адресом mamory
НАЗАД Assembler PIC Си AVR ДАЛЬШЕ