www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik unterschied rcall rjmp


Autor: krapf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ändert sich intern in meinem AVR wenn ich statt rjmp rcall oder 
umgekehrt verwende?

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
der inhalt des stacks und der stackpointer selbst demzufolge auch

Autor: krapf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wie meinst du das kannst du mir das genauer erklären?

Autor: Analog (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Analog (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Äh, sorry nicht Stackpointer, sondern der Instructionpointer.

Autor: krapf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wo springt jmp dann hin?

Autor: Matthias Kölling (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Analog (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ein jmp ist eigentlich nichts anderes als den Instructionpointer mit der 
adresse im jmp zu laden. Wie ein goto in Basic, ein call wie ein gosub. 
Klar ??

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: krapf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
gecheckt danke !!!!!!!!!

Autor: Analog (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

:)

Autor: Matthias Lipinsky (lippy)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Je nach Programmiersprache heisst es manchmal Funktion und manchmal 
Unterprogramm, Subroutine, procedure, oder anders. Ein Vorhandensein 
eines Rückgabewertes kann man daraus oft nicht ablesen.

Autor: Analog (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@lippy

>>Jetzt kommt der Haarspalter :

>Also nix ist. Das war schon alles richtig so

nein.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.