Da Dokumentation nicht wirklich beschreibt, wie die Flags betroffen sind, konnte ich nicht herausfinden, was ist der Unterschied zwischen tragen und signierte Flag während Unteranweisung, es scheint wie immer ein < b in sub a, b
es werden sowohl Carry- als auch Signed-Flags gesetzt. Gibt es einen Fall, in dem ein signiertes Flag während des Unterbefehls ohne Übertrag (oder umgekehrt) gesetzt wird?Sub-Anweisung und betroffenen Flags auf x86
0
A
Antwort
2
Gibt es einen Fall, in dem signierte Flag während der Unteranweisung ohne Übertrag (oder umgekehrt) gesetzt wird?
Sure:
mov al,0xFE
sub al,2
Das Ergebnis ist 0xFC, die, wenn sie als signierte 8-Bit betrachtet -4. Also wird der SF gesetzt, wenn CF frei ist (Carry kann als "unsigned less than" angesehen werden, und 0xFE ist offensichtlich nicht vorzeichenlos kleiner als 2).
+0
vielen Dank, ich verstehe es jetzt. –
Ja, natürlich. "sub 1, 2" erzeugt das Ergebnis "-1", das in signed (kein Überlauf) in Ordnung ist, aber in unsigned (also carry) umläuft. – Jester
AFAIK, beschreibt die Intel-Dokumentation, welche Flags wie betroffen sind. –