Forum: Mikrocontroller und Digitale Elektronik subi mit negativer Konstante -> "falsches" Carry Bit


von Leopold M. (lemau)


Lesenswert?

Um auf dem AVR eine konstante Zahl zu addieren kann man ja einfach eine 
negative Zahl subtrahieren.
1
subi r16, -1
So weit so gut...
Wenn ich jedoch mit selbiger Methode eine Zahl zu 0 addiere wird immer 
das Carry Bit gesetzt.
1
ldi r16, 0
2
subi r16, -1
3
;"Falsches" Carry Bit im SREG
4
;Branches etc. funktionieren hier nicht wie gewollt
Mein Workaround:
1
ldi r16, 0
2
ldi r17, 1
3
add r16, r17
4
;Branches etc. funktionieren hier
Gibt es eine Methode außer ldi und add Anstelle von subi zu nutzen?

von (prx) A. K. (prx)


Lesenswert?

Was ist der tiefere Sinn der Übung? Also weshalb stört das "falsche" C?

von Leopold M. (lemau)


Lesenswert?

Weil ich das Carry Bit mithilfe eines brcs auswerten möchte um einen 
Überlauf zu verhindern.

von (prx) A. K. (prx)


Lesenswert?

brcc verwenden?

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.