kurze Frage zum add-Befehl wenn ich 2 Register addiere die jeweils auf 255 stehen dann müsste ja das Ergebniss 9Bits groß sein. Wo wird dieses 9 bit abgelegt im Carry? bei dieser 16bit Addition: add Zahl1l, Zahl2l adc Zahl1h, Zahl2h müsste es ja auch ein 17bit geben landet das auch im Carry. Laut dem Instruction set werden mit adc 2 Register und der Inhalt des Carry-Flags addiert, also muss ja das Carry durch die vorherige Addition gesetzt werden wenn das Ergebniss über 8bit hinausgeht.
Wenn Du zwei Zahlen addierst und es entsteht ein Überlauf, dann wird das Carry-Flag gesetzt. Wenn es keinen Überlauf gibt, wird das Carry-Flag gelöscht. Wenn es bei "add Zahl1l, Zahl2l" einen Überlauf gibt, wird das Carry gesetzt. Bei "adc Zahl1h, Zahl2h" wird dann das Carry von der Low-Byte-Addition zum Ergebnis der High-Byte-Addition hinzugefügt. Wo ist das Problem?
ok danke also dann stellt das Cyrry also das 9te bzw. 17te bit dar.
Nicht ganz, das Carry stellt nur den Übertrag da. Das 9te Bit der Addition steht immer noch in deiner High-Adressee. Wobei das wohl eher ein begriffliches und kein Verständnis-Problem ist.
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.