PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Anfängerfrage zu Unterprogrammen



26.06.2004, 10:40
Hallo! O:)

Was ist die einfachste Möglichkeit zum Verwenden von Unterprogrammen in ASM?
Ich will einen bestimmten Programmteil aufrufen, und wenn dieser abgearbeitet ist, soll es im Code wieder normal weiter gehen.

Ich habe ein Tutorial zu diesem Thema gelesen, aber es hat mich nur verwirrt anstatt zu helfen. 8-[

Bitte um eure Hilfe.

JavaMasta
26.06.2004, 15:04
Ich kann dir einmal etwas über die Grundlagen erzählen =) aber ich java halt...


du hast dein Programm...
.
.
.
int v=0; //Ergebniss
int b=3; //zahl eins
int c=5; //zahl zwei
v=rechne(b,c){ //rufst irgentwo eine Methode auf und übergibst die zwei Zahlen
return b+c; //b und c werden addiert und zurückgegeben
}
.
.
. //jetzt geht das Programm weiter

bei C++ gehts (fast) gleich
nur das ist halt objektorientiert

26.06.2004, 15:13
Danke, aber dass hilf mir nichts, ich will wissen wie man dass in ASSEMBLER macht.

JavaMasta
26.06.2004, 15:29
da assembler nicht objektorientiert ist...
ich glaub das geht gar ned...=) aba ich weis ned genau
in assembler wird ja linear runtergeproggt
kannst es nich mit einer if machn? statt dem Methodenaufruf die if

aber wie gesagt, bin mir nicht ganz sicher

Michael
26.06.2004, 15:45
Hallo Gast,

Zitat:

RCALL irgendwas ; Springe in das UP irgendwas
[...] hier geht es normal weiter im Programm

Hier landet der Sprung zum Label irgendwas irgendwo im Programm,

irgendwas: ; das hier ist das Sprungziel
[...] Hier wird zwischendurch irgendwas getan
[...] und jetzt kommt der Rücksprung an den Aufrufort im Programm:
RET

Beim RCALL wird der Programmzähler, eine 16-Bit-Adresse, auf dem Stapel abgelegt. Das sind zwei
PUSHs, dann sind die 16 Bits auf dem Stapel. Beim Erreichen des Befehls RET wird der Programmzähler
mit zwei POPs wieder hergestellt und die Ausführung des Programmes geht an der Stelle weiter,
die auf den RCALL folgt.

Zitat Ende

Quelle: http://www.avr-asm-tutorial.net/beginner_de.pdf auf Seite 20 im pdf

War das so verwirrend?
Gruss, Michael

P.S.@JavaMasta: Wenn du dir nicht sicher bist, warum postest du es dann? (Kopfschüttel)

26.06.2004, 16:14
Danke Michael!!
Deine Erklärung war nicht verwirrend! \:D/
@Java [-X

JavaMasta
26.06.2004, 17:41
Wollt ja nur ein bsp geben....=)

Florian
27.06.2004, 08:41
Hi Gast!
Ich denke man sollte dir noch den Tipp geben, dass man für diese Befehle den Stackpointer initalisieren muss!
Wenn Du nicht weißt, wie das geht, meld Dich ruhig!
Fragen schadet nie! ;-)