AVR Assembler - Unterprogramme
Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
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