unterschied rcall rjmp

Gast #784055
Lesenswert?
• ▲
▼
Assembler ist schon lange her bei mir. Aber ich glaube bei call kommt 
eine Rücksprungadresse auf den Stack. Bei einem RET-Kommando springt der 
Stackpointer wieder an die Stelle nach dem Call. JMP macht das nicht.
Gast #784059
Lesenswert?
• ▲
▼
call ist ein Unterprogrammaufruf, bei dem die Rücksprungadress auf dem 
Stack abgelegt wird. Nach einem ret wird das Programm an der Stelle nach 
dem Unterprogrammaufruf fortgeführt. jmp ist eine Verzweigung im 
Programm auf eine andere Adresse.
Gast #784062
Lesenswert?
• ▲
▼
>wo springt jmp dann hin?

jmp springt an die adresse, die du hinter jmp schreibst.
call macht das ebenso. nur mit dem unterschied:
call merkts sich, von wo aus an die adresse gesprungen wird. es merkt 
sich als die alte adresse.
am ende einer mit call angesprungenen funktion schreibt mat ein ret. das 
bedeutet: rücksprung wo du herkamst. dadurch springt der µC an die 
stelle direkt hinter den call befehl. bei jmp geht das nicht, weil 
dieser befehl sich nichts merkt.

dadurch hast du den vorteil, oft benutzte codezeilen als funktion zu 
verpacken und von beliebiger stelle im programm aufzurufen.
Gast #784073
Lesenswert?
• ▲
▼
Jetzt kommt der Haarspalter :

@ lippy

keine Funktion sondern Unterprogramm/Subroutine. Eine Funktion gibt nach 
einer  Operation einen Wert zurück, hierbei können auch Argumente 
übergeben werden. So.

:)
Gast #784091
Lesenswert?
• ▲
▼
> Analog (Gast)

Na und? Das kann doch trotzdem sein. Eine Funktion wird immer mit call 
aufgerufen und mit ret beendet.

>Jetzt kommt der Haarspalter :

Also nix ist. Das war schon alles richtig so

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren