Zero und Overflow Flag gleichzeitig gesetzt!?

1 Antwort

Vom Fragesteller als hilfreich ausgezeichnet

Das passiert z.B. bei folgender Addition (ich mache es zwecks Übersichtlichkeit jetzt nur mit 4 Bit):

1000 + 1000 = 0000

Denn das Overflow-Flag wird z.B. dann gesetzt, wenn die Summe zweier Zahlen mit gesetztem Vorzeichenbit ein Resultat mit gelöschtem Vorzeichenbit ergibt.

Achtung: Verwechsle nicht Overflow mit Carry!

AchSo774 
Fragesteller
 10.03.2023, 06:50

Ja, das stimmt. Aber in diesem Fall soll das Carry Flag auch gesetzt sein !

0
AchSo774 
Fragesteller
 10.03.2023, 06:59

ich meine, wenn wir overflow und zero Flag gleichzeitig setzten, soll auch das carry Flag gesetzt sein. Aber das ist nicht der Fall in der Aufgabe !!!!

0
ultrarunner  10.03.2023, 07:04
@AchSo774

Dieser Zustand kann auch das Resultat mehrere Befehle sein. Es gibt ja auch Befehle, die das Carry-Flag beeinflussen, nicht aber das Overflow-Flag (z.B. Rotate through Carry), dann bleibt das Overflow-Flag unverändert.

Und es gibt auch einen Befehl zum Löschen des Carry-Flags.

2
AchSo774 
Fragesteller
 10.03.2023, 07:10
@ultrarunner

Ja, das auch möglich. Nach den ersten befehl nämlich MOV EAX, 300 werden die Flags 0 0 0 0, richtig??

0
AchSo774 
Fragesteller
 10.03.2023, 07:27
@ultrarunner

Ach So !

Nach den vierten Befehlsfolge haben wir 1 0 1 0

Der CMP Befehl lässt auch die Flags unverändern ? Falls nicht, nach welchem Prinzip verändern er die Flags ?

0
ultrarunner  10.03.2023, 07:35
@AchSo774

CMP beeinflusst natürlich die Flags, sonst hätte man nichts davon.

Du musst nur in der Dokumentation der Befehle nachsehen. Dort steht bei jedem Befehl, welche Flags er beeinflusst.

Generell werden die Flags nur von solchen Befehlen beeinflusst, bei denen dies irgendwie sinnvoll ist, weil der Befehl etwas berechnet.

2