www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ASM Verständnisfrage


Autor: Gästchen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hey,
ich verstehe nicht was folgender inline-asm befehl macht.

"rjmp 1f\n 1:"

Was ich bisher herausgefunden habe:
- rjmp: relativer jump
- \n Zeilenumbruch zum trennen mehrerer asm-befehle
- 1: stellt eine marke da

Nur wo ist nun der Zusammenhang? (Handelt sich hierbei um ein Delay aus
einer LCD-Routine aus der Define Anweisung. Scheint öfters verwendet zu
werden).

Autor: Sebastian Eckert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es muß im Programmcode irgendwo eine Marke (auch als Label bezeichnet)
geben, die "lf" heißt. Dies sind dann zwei Assemblerzeilen, nämlich
"rjmp lf" und "l:". Das erste ist ein Sprung zu einer Marke mit dem
Namen "lf:" und darauffolgend wird eine weitere Sprungmarke gesetzt,
nämlich "l". Also in Klartext:

<...Programmcode vorher...>
rjmp lf
l:
<...Programmcode nachher...>

Irgendwo im Code muß die Zeile
lf:
vorkommen, sonst ergibt das Ganze keinen Sinn.

Autor: Beschreibung (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hm,
im ganzen Programmcode kann ich kein "1f" finden :(

also die ganze Zeile sieht wie folgt aus:

_asm_ __volatile__( "rjmp 1f\n 1:" );              //warte 500ns

Quelle:
http://www.mikrocontroller.net/mc-project/Pages/AV...

Vielleicht ist es im Zusammenhang doch klarer?
Ich komme zumindest nicht dahinter :(

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"1f" steht für das nächste Label "1" (forward), wie umgekehrt "1b"
für das voreherige steht (backward). Der u.A. Befehl ist also nicht als
eine langsamere Version von "nop".

Autor: Beschreibung (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, alles klar.

Wo finde ich solche Informationen generell? Dann muss ich für solche
"Kleineigkeiten" nicht immer das Forum "belasten".

Danke und viele Grüße

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die universelle Erkenntisquelle für alle Fragen ist noch erfunden
worden. In diesem Fall steht das bestimmt irgendwo in der Doku vom GNU
Assembler:
http://www.redhat.com/docs/manuals/enterprise/RHEL....

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...ist noch nicht erfunden worden...

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sorry, da ist was schiefgegangen. Einmal hätte gereicht.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
vielleicht hilft Dir dieser Beitrag:

http://www.roboternetz.de/wissen/index.php/Inline-...

Autor: Beschreibung (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Vielen Dank für den Link.

Dort hatte ich in meiner Recherche vor dem Posting auch bereits
geschaut und habe dafür nichts gefunden. :)

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.