Am einfachsten machst Du dir im Data-Segment (.dseg = SRAM) Marken wobei
diese Marken gleich als Variablennamen zu verstehen sind:
.cseg ;Code-Segment
ldi r16,1 ;1 in VAR1 schreiben
sts VAR1,r16
ldi r16,2 ;2 in VAR2 schreiben
sts VAR1,r16
ldi r16,3 ;3 in VAR3 schreiben
sts VAR1,r16
lds r16,VAR1 ;Aus VAR1 nach r16 lesen
lds r17,VAR2 ;Aus VAR2 nach r17 lesen
lds r18,VAR3 ;Aus VAR3 nach r18 lesen
.dseg ;Data-Segment/SRAM
VAR1: .byte 1 ;1 Byte für VAR1 reservieren
VAR2: .byte 1 ;1 Byte für VAR2 reservieren
VAR3: .byte 1 ;1 Byte für VAR3 reservieren
Bei größeren Variablen oder Blöcken mit mehr als 3 Byte geht das mit
std oder ldd (Store/Load with Displacement) wesentlich sparsammer da
sts/lds 2 Words benötigt und std/ldd nur 1 Word.
Nachteil: es muß vorher ein Pointer Y oder Z auf den Anfang eines
Variablenblocks gesetzt werden und lohnt sich wirklich erst ab 3 Bytes
um damit im SRAM zu schreiben oder zu lesen.
Ausserdem hat man nur über 64 Bytes (0 - 63) einen direkten Zugriff:
ldi yl,low(VAR1) ;Pointer Y auf VAR1 setzen
ldi yh,high(VAR1)
ldi r16,1 ;1 in VAR1 schreiben
std Y+VAR1-VAR1,r16 ;Y+0
ldi r16,2 ;2 in VAR2 schreiben
std y+VAR2-VAR1,r16 ;Y+1
ldi r16,3 ;3 in VAR3 schreiben
std Y+VAR3-VAR3,r16 ;Y+2
Ich hoffe, das war jetzt nicht zu viel auf einmal, wollte nur die
Möglichkeiten aufzeigen.
MfG
Andi