funktion des carry flags

Gast #67477
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
Gast #67478
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! :-)
Gast #67480
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?!
Gast #67481
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
Gast #67482
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
Gast #67483
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

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren