AVR Assembler - Unterprogramme: Unterschied zwischen den Versionen

Aus der Mikrocontroller.net Artikelsammlung, mit Beiträgen verschiedener Autoren (siehe Versionsgeschichte)
Wechseln zu: Navigation, Suche
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 1: Zeile 1:
== Aufruf ==
== Aufruf ==


Unterprogramme werden auf dem AVR mit dem Befehl "rcall" aufgerufen, wobei man als Operand die [[relative Adresse]] oder ein Label angibt.
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 Registern ist es sinnvoll ein paar Register zur Parameterübergabe zu reservieren, z.B. R12-R15 (je nach Bedarf mehr oder weniger).
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