Forum: Mikrocontroller und Digitale Elektronik AVR: Gibt's dafür einen passenden Branch-Befehl...


von Peter Leifling (Gast)


Lesenswert?

Hallo,

ich habe zwei vorzeichenlose 1-Byte-Integer und bilde
deren Differenz.

Weiß jemand, ob es einen passenden Branch-Befehl gibt,
der genau dann springt, oder eben genau nicht dann springt,
wenn das Ergebnis in ein vorzeichenbehaftetes 1-Byte-Integer
paßt?

Bsp.:
A=200, B=130, A-B=70 paßt.
A=200, B=70, A-B=130 paßt nicht.
A=10, B=50, A-B=-40 paßt.
A=10, B=200, Ab-B=-190 paßt nicht.

Hab jetzt schon die ganzen Formeln für die Flags
beim sub-Befehl durchgeschaut, komme aber irgendwie
nicht dahinter.


Danke.
Peter Leifling

von D. W. (dave) Benutzerseite


Lesenswert?

Ich habs noch nie benutzt.. aber es gibt das V-Flag..
Zweierkomplement-Überlauf.

von A.K. (Gast)


Lesenswert?

V setzt voraus, das die Operanden im 2-er-Komplement sind. Ist hier
nicht der Fall.

Resultat ist ok wenn C=N.

von Peter Leifling (Gast)


Lesenswert?

Hallo,

daß es das Carry ist, wäre ja zu einfach. ;-)

Das Carry wird z.B. bei 4-9 gesetzt, was ja aber wohl noch paßt.

Any other ideas?

Grüße
Peter

von Hugo (Gast)


Lesenswert?

Willst du Äpfel mit Birnen vergleichen?

von A.K. (Gast)


Lesenswert?

War wohl zu kurz ausgedrückt.

Wenn nach dem CP/SUB das Carry-Bit (C) den gleichen Wert hat wie das
Sign-Bit (N), dann passt es.

von Peter Leifling (Gast)


Lesenswert?

Hallo A.K.

das ist es.

Vielen Dank.
Peter

von A.K. (Gast)


Lesenswert?

mov  r16, A
sub  r16, B
andi r16, 0x80
sbci r16, 0
brmi out_of_range

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.