funktion des carry flags

Gast #67477
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
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
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
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
>> 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
"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

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.