bedingter Sprung

Gast #274298
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
Gast #274299
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
Gast #274300
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.
#274301
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.

...
Gast #274305
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....
Gast #274306
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

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.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.