mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik bedingter Sprung


Autor: Sven Schertzinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hätte eine Frage zu bedingten Sprungbefehlen.
Ich möchte 2 Zahlen miteinander vergleichen und nur wenn die eine Zahl
größer ist wie die andere, dann soll der Sprung ausgeführt werden,
ansonsten wird das Programm weiter abgearbeitet. Ist die in Assembler
überhaupt möglich?

z.B.:
4>3? --> Ja, Sprung an eine andere Stelle
2>3? --> Nein, Programm wird weiter abgearbeitet

Autor: Stefan Pfister (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Falls du das mit einem AVR machen willst gibt es gleich ein paar
Möglichkeiten, es spielt auch eine Rolle ob es vorzeichenlose Zahlen
sind oder nicht:

BRGE
BRLO
BRLT
BRSH

Näheres verrät dir der instruction set des jeweiligen AVR

Gurss

Autor: Sven Schertzinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es ist ein Atmel-Controller...Programmiert wird über das Atmel-Tool
Flip...

Genauer gesagt, möchte ich vergleichen ob die Zahl im Akku größer oder
gleich 10 ist bzw. anders herum geht es auch, ob die Zahl im Akku
kleiner gleich 9 ist.

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was ist denn ein Atmel-Controller?

Atmel produziert eine breite Palette verschiedener Controllerfamilien,
unter Anderem, 8051er (At89xx), AVRs (AT90xx), ARM (AT91xx)...

Wenn du also konkrete Hilfe haben willst, dann nenne das Teil beim
korrekten Namen, so dass keine Missverständnisse möglich sind.

...

Autor: Sven Schertzinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe den AT89C51CC03

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Bei AVR hätte ich helfen können, von 8051 habe ich keine Ahnung...

...

Autor: Sven Schertzinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kein Thema, dennoch Danke!

Autor: Dieter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mal so aus dem Ärmel geschüttelt:
Prüfen auf Gleichheit: CNJE oder alternativ eine Zahl von der anderen
Subtrahieren und wenn Zero rauskommt, mit JZ springen.

Zum prüfen auf größer oder kleiner:
Carry - Flag setzen
Eine Zahl von der anderen Abziehen unter Berücksichtigung des Carry
Flags. Wenn das Carryflag nach der Operation verschwindet, war die
erste Zahl größer als die andere (Sprung mit JNC). Wenn das Carryflag
noch vorhanden ist, war die zweite Zahl größer als die erste (Sprung
mit JC)

Klingt kompliziert, sind aber nur zwei oder drei Befehle
hintereinander....

Autor: Sven Schertzinger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe es mittlweile so gelöst:


Subtraktion:

  subb A, #0Ah  ;vom Akku wird 10 abgezogen
  jnc Subtraktion ;Sprung an Label Subtraktion, wenn Carry-Bit 0 ist
  add A, #0Ah  ;10 wieder hinzuaddieren um die letzte positive
Einer-Stelle zu erhalten
  add A, #30h  ;hinzuaddieren der Zahl 0 im Hex-Code um richtige
Hex-Zahl zu erzeugen
  mov R3, A    ;Inhalt vom Akku in R3 kopieren (Einer-Stelle)

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.