AVR Assembler - Unterprogramme

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Version vom 13. Dezember 2003, 16:27 Uhr von Andreas (Diskussion | Beiträge)
(Unterschied) ← Nächstältere Version | Aktuelle Version (Unterschied) | Nächstjüngere Version → (Unterschied)
Wechseln zu: Navigation, Suche

Aufruf

Unterprogramme werden auf dem AVR mit dem Befehl "rcall" aufgerufen, wobei man als Operand die relative Adresse oder ein Label angibt.

Parameterübergabe

Auf Prozessoren mit vielen Registern ist es sinnvoll ein paar Register zur Parameterübergabe zu reservieren, z.B. R12-R15 (je nach Bedarf mehr oder weniger).

.def par1 = r12
.def par2 = r13
.def par3 = r14
.def par4 = r15
.def temp = r16
unterprogramm:
       ; irgendetwas tun
       ret
main:
       ; Umweg über r16, da r0-r15 nicht direkt mit Konstanten arbeiten können
       ldi temp, 0x20
       mov par1, temp
       rcall unterprogramm