Direttiva .org AVR assembly (atmega8535)
salve a tutti,
stavo provando ad analizzare un programmino trovato sul mio libro per prendere maggiore confidenza con assembly
non riesco bene a capire cosa fa quando usa questo procedimento....
sto per inserire l'intero programma
in particolare non capisco come funziona in questo caso l'indirizzamento indiretto e scendendo di + nei particolari non capisco perché:
moltiplica Zl per 2 utilizzando lsr
somma 26 a zl
e cosa fa con .org 13
stavo provando ad analizzare un programmino trovato sul mio libro per prendere maggiore confidenza con assembly
non riesco bene a capire cosa fa quando usa questo procedimento....
sto per inserire l'intero programma
- Codice: Seleziona tutto
Declaration
.def temo=r16
.def NoteL=r19
.def NoteH=r23
.def Length=r20
.def address=21
Start of Program
rjmp init
reti
reti
reti
rjmp ToggleOut
reti
rjmp ChangeNote
.org ox13
LookUPTable:
.dw 0xecb
.dw ....
.dw ...
.dw ...
.dw ...
.dw ...
.dw ..
.dw ...
.dw ...
.dw ...
.dw ....
.dw ...
ToggleOut:
in temp,PortD
com temp
out PortD,temp
reti
ChangeNote:
dec Length
breq PC+2
reti
Rest: in temp,TIFR
sbrs temp,1
rjmp Rest
ldi temp,0b00000010
out TIFR,temp
Read_EEprom:
out EEARL,address
sbi EECR,0
in ZL,EEDR
andi ZL, 0b00001111
cpi ZL,0x0C
breq Reset
brlo PC+2
ldi ZL,0x0B
lsl ZL
subi ZL,-0x26
lpm
mov NoteL,R0
inc ZL
lpm
mov NoteH,R0
in particolare non capisco come funziona in questo caso l'indirizzamento indiretto e scendendo di + nei particolari non capisco perché:
moltiplica Zl per 2 utilizzando lsr
somma 26 a zl
e cosa fa con .org 13