Forum: Mikrocontroller und Digitale Elektronik funktion des carry flags


von adrian (Gast)


Lesenswert?

hallo!
ich schreibe in ca 1,5 monaten mein abitur in informatik und ich habe
inzwischen die genaue funkton des carry flags vergessen. ich kann auch
nix dazu in meinen unterlagen finden! es wäre nett wenn jemand eine
beschreibung zur funktion des carry flags parat hätte!

danke schon mal im voraus!
adrian

von Divison (Gast)


Lesenswert?

Das Übertragsflag. Wenn du mit einer Rechnung aus dem Wertebereich
kommst, wird das Carryflag gesetzt, damit du weisst, das du den
"Überlauf" noch in dem vom Prozessor vorgesehenen Register
berücksichtigen musst, um keine Rechenfehler zu bekommen.

Kannst ja mal das Datenblatt von deinem Prozessor lesen, da steht das
irgendwo drin! :-)

von adrian (Gast)


Lesenswert?

danke!! :)

von Thommy (Gast)


Lesenswert?

Dazu hab ich auch noch ne Frage:

Wenn ich subtrahieren will, und ein negatives Ergebnis rauskommt, warum
ist dann das Carry Bit gesetzt?

Also, mal als Beispiel:
5-10

Also  0000 0101
     +1111 0110  (2erkomplement)
---------------------------
gibt 01111 1011   = FBh

davon das 2erkomplement ist 0000 1010, also (-)5

Ich hab im Keil Compiler ausprobiert, als Ergebnis krieg ich dann FBh
und das Carry Bit = 1.
Warum ist das Carry hier 1?? Ich hab doch keinen Übertrag?!

von Andi K. (Gast)


Lesenswert?

Doch, hast Du, oder genauer gesagt ein Borow (Unterlauf).
Falls Deine Variable nicht 8 Bit sondern 16 Bit breit ist signalisiert
das Carry-Flag das vom high-Byte noch extra eine 1 subtrahiert werden
muß.

MfG
Andi

von Hagen (Gast)


Lesenswert?

>> Warum ist das Carry hier 1?? Ich hab doch keinen Übertrag?!

Deshalb heist es "Carry" Flag, es ist ein Überlauf-/Unterlauf Flag.
Es ist wichtig bei jeder Art von Addition und Subtraktion, also auch
bei Vergleichoperationen (sind im Grunde Subtraktionen) bei
Multiplikationen, Divisionen, und sogar Shiftoperationen (Links Shifts
sind Additionen). Auf vielen Rechnern hat das Carry noch andere
Aufgaben und fast immer kann es direkt gesetzt/gelöscht werden. Ich
kann garnicht verstehen (bei einem so wichtigen Flag) das du das
vergessen konntest :)

Gruß Hagen

von Peter Dannegger (Gast)


Lesenswert?

"Ich hab im Keil Compiler ausprobiert"

Beim 8051 ist das Carry auch noch der Accu der Bitrecheneinheit, d.h.
es läßt sich mit anderen Bits laden und AND, NAND, OR, NOR, EXOR, EXNOR
verknüpfen.

Weiterhin wird es in Rotationsbefehlen verwendet.


"Deshalb heist es "Carry" Flag, es ist ein Überlauf-/Unterlauf
Flag."

Das ist falsch, den Überlauf zeigt das OV-Flag an (0x7F->0x80),
interessiert aber nur bei signed Zahlen.

Das Carry bedeutet Übertrag (Addition) oder Borgen (Subtraktion).


Peter

von Hagen (Gast)


Lesenswert?

>> Das ist falsch, den Überlauf zeigt das OV-Flag an (0x7F->0x80),

Sorry, natürlich korrekt, Übertrag- statt Überlauf- Flag.

Gruß Hagen

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.