AVR Assembler - Unterprogramme: Unterschied zwischen den Versionen
Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Keine Bearbeitungszusammenfassung |
Keine Bearbeitungszusammenfassung |
||
Zeile 1: | Zeile 1: | ||
== Aufruf == | == Aufruf == | ||
Unterprogramme werden | Unterprogramme werden beim dem [[AVR]] mit dem Befehl "rcall" aufgerufen, wobei man als Operand die [[relative Adresse]] oder ein Label angibt. | ||
== Parameterübergabe == | == Parameterübergabe == | ||
Auf Prozessoren mit vielen | Auf Prozessoren mit vielen [[Register]]n ist es sinnvoll ein paar Register zur Parameterübergabe zu reservieren, z.B. R12-R15 (je nach Bedarf mehr oder weniger). | ||
<pre> | <pre> |
Version vom 13. Dezember 2003, 16:29 Uhr
Aufruf
Unterprogramme werden beim 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