Hallo, wollte gerade Befehl Neg mit Simulator testen und habe als Probe folgendes eingetippt start: ldi r26,0x02 out PORTB, r26 neg r26 out PORTB, r26 habe, wie erwartet als Ergebnis 0xfe erhalten aber bei Flags waren S,N und C alle 1 gesetzt. Wegen S und N ist klar, doch warum C=1? es hat doch kein Überlauf statt gefunden? 00000010 //0x02 11111101 //1K 00000001 //+1 _______ 11111110 //2K kein Überlauf kann mich jemand aufklären? danke!
Es gibt zwei komplementäre Konventionen für die Subtraktion: (1) Addition des Einerkomplements, 0-1 gibt C=0, 0-0 gibt C=1 (2) Echtes Borrow, 0-1 gibt C=1 als Borrow. Bei (2) endet jede Negation, also 0 minus X, mit Borrow, also C=1, ausser bei 0.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.