Forum: Gesperrte Threads AVR: Unterschied CALL und RCALL


von Jan M. (jan11111)


Lesenswert?

Hallo,

ich habe eine recht einfache Frage, auf die ich allerdings keine Antwort 
finde. Worin besteht der Unterschied in einem Assembler Programm 
zwischen CALL und RCALL. Ich weiß, dass der Unterprogrammaufruf absolut 
und direkt ist. Aber was macht das jetzt für einen Unterschied bei der 
Programmierung? Muss ich das Unterprogramm, dass ich mit RCALL aufrufe 
mit RET beenden und bei CALL nicht? Oder was ist der Unterschied?

Danke schon mal :)

: Bearbeitet durch Admin
von holger (Gast)


Lesenswert?

>Muss ich das Unterprogramm, dass ich mit RCALL aufrufe
>mit RET beenden und bei CALL nicht?

Das musst du bei beiden.

CALL kann durch den gesamten Speicherbereich springen,
RCALL nur einen kleinen Bereich. Ich meine +-2kB.
Kann mich aber auch irren. Also Assembler Referenz lesen.

von Johann L. (gjlayde) Benutzerseite


Lesenswert?

RCALL: Relative 12-Bit (signed) Word-Adresse. 1-Word Befehl.

CALL: Absolute 22-Bit Word-Adresse. 2-Word Befehl.

: Bearbeitet durch User
von Falk B. (falk)


Lesenswert?

Schon mal in Assembler Manual geschaut? RCALL kann nur +/- 4096 Worte 
realtiv vom akuellen PC weit springen, CALL 64k bzw. 4M absolut weit.

von Heinz V. (heinz_v)


Lesenswert?

CALL oder Long Call oder absolute Call ist ein Sprung zu der unmittelbar 
angegebenen Addresse

RCALL - relativew Call ist ein Sprung vom aktuellen Programmcounterwert 
+ Sprungweite + 1

Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.