2016-04-18 8 views
0

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

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

+0

AFAIK, beschreibt die Intel-Dokumentation, welche Flags wie betroffen sind. –

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. –