www.mikrocontroller.net

Forum: PC-Programmierung Assembler: Fehler im Unterprogramm


Autor: rennschlumpf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich habe in einem Unterprogramm meiner µCprogramms einen Fehler(laut 
compiler).
Unterprogramm:

taster:inc R0
    cjne R0,#10d,sprung1
    mov R0,#0d
    inc R1
    cjne R1,#10d,sprung2
    mov R1,#0d

sprung2:sprung1:ret

und zwar bei den Sprungnamen. Andere Namen helfen nicht, wenn ich beide 
cjne Befehle entferne funktioniert alles einwandfrei.

Kann mir jemand helfen?

Vielen Dank

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie üblich: Welcher Controller?
für die Avr gibt es meines Wissens keine Befehle mit drei Operanden. Und 
cjne kommt mir unbekannt vor.

Autor: André (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Controller ist wohl ein 8051.

sprung2:sprung1:ret


Wer erlaubt dir denn, die Sprungmarken in eine Zeile zu schreiben?

Gruessle

Autor: André (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
EDIT:

Naja vielleicht gehts ja sogar. Welche Fehlermeldung wirft denn der 
Assembler aus?

Gruessle

Autor: rennschlumpf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich wüsste keine andere Lösung ich will quasi bei beiden Verzweigungen 
direkt aus dem Unterprogramm raus gehen. Wie kann ich das lösen?

Ja, handelt sich um einen 8051.

Autor: Dussel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich würde die Sprungmarken untereinander schreiben

Autor: rennschlumpf (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
line 38 ist die Zeile mit ret und line 32 der erste cjne Befehl

Autor: rennschlumpf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok,scheint zu funktionieren.

Dankeschön :)

Autor: Miraculix (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
André hat recht!

Nur EINE Sprungmarke pro Zeile! Ist doch auch Übersichtlicher!

Also:

sprung1:
sprung2:
         Ret

Mehrere Sprungmarken bzw. Labels hintereinander machen nichts!

Logisch daß zwei Fehler gemeldet werden! Weil Zeile 38 (die mit dem Ret)
fehlerhaft ist (2 Labels in einer Zeile) wird sie nicht übersetzt.
Damit Label Sprung1 unbekannt, was zur 2. Fehlermeldung führt!

Gruß

Miraculix

Autor: André (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine andere Frage, die sich mir da stellt.

Warum laesst du nicht beide CJNEs einfach zu Sprung1 huepfen und 
loeschst Sprung2 einfach? :)

Gruessle

Autor: rennschlumpf (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
da war ich nicht sicher ob das funktioniert, von 2 verschiedenen Stellen 
auf den selben Namen zu springen.

Autor: taugenichts (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>da war ich nicht sicher ob das funktioniert, von 2 verschiedenen Stellen
>auf den selben Namen zu springen.

Autsch

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.