mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik funktion des carry flags


Autor: adrian (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Divison (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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! :-)

Autor: adrian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
danke!! :)

Autor: Thommy (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?!

Autor: Andi K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hagen (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hagen (Gast)
Datum:

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

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

Gruß Hagen

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.