Lo que quiero hacer es una rutina que mueva datos desde la SRAM hasta un grupo de registros (concretamente del r2 al r9)
Después tengo que volver a mover los datos de los registros a la SRAM.
Antes lo hacía a mano (8 instrucciones para un sentido y otras 8 instrucciones para copiar en el sentido contrario)
Ahora lo quiero hacer con punteros y bucles para que ocupe menos:
#define data r2
; Mueve los datos de la SRAM a los registros
pop_reg:
ldi YL, lo8(data_buff)
ldi ZL, lo8(data)
rjmp memcpy
; Mueve los datos de los registros a la SRAM
push_reg:
ldi YL, lo8(data)
ldi ZL, lo8(data_buff)
rjmp memcpy
; Mueve 8 datos desde la posición Y hasta la posición Z
memcpy:
ldi r_index, 8
memcpy_1:
ld temp0, Y+
st Z+, temp0
dec r_index
brne memcpy_1
ret
P.D.: Ahora estoy escribiendo todo en ASM