Hi, im Zuge meiner Klausurvorbereitung, hänge ich an einer Übungsaufgabe:

"Einem Unterprogramm sollen 2 Parameter über den Stack übergeben werden:
A: 8-Bit
B: 16-Bit

Ergänzen Sie das untenstehende Programm derart, dass der Parameter A in r16, der Parameter B in r24:r25 geladen werden"

Hier der vorgegebene code:
Code:
.cseg
lds r16, A
push r16
lds r16, B+0
push r16
lds r16, B+1
push r16
rcall Unterprogramm

.dseg
A: .BYTE 1
B: .BYTE 2
.cseg

Unterprogramm:
; Hier nun mein code den ich überlegt hatte
pop r16       ;r16 von stack holen, müsste B+1 sein, also der HIGH-BYTE von B
mov r24, r16
pop r16       ;nächsten stack-Inhalt holen, müsste B+0 sein, also LOW-BYTE von B
mov r25, r16
pop r16       ;letzten Teil vom stack holen, müsste A sein, somit fertig
ret              ;return
Kann es so einfach sein ?? Irgendwie sieht mir das nicht richtig aus. Muss ich irgendwie dem System noch sagen dass in r24 die HIGH-bytes sein sollen und die dazugehörigen LOW-bytes in r25 ?
Oder muss ich bei späterer Verwendung selber mich "erinnern" dass r24 und r25 gemeinsam eine 16-Bit-Wert darstellen ?

Sorry falls ich so blöd frage, aber alle haben doch ein gewisses Problem mit der Didaktik unseres Dozenten, so dass so (anscheinend) einfache Dinge wie der Umgang mit 16-Bit-Werten in 8-Bit-Registern nicht grad detailliert durchgenommen wurde.

Hoffe auf Hilfe hier

Gruss,
Lalas