2016-04-27 4 views

Antwort

1

Zum Einstellen der Overflow flag(OF) - Bit 11 of EFLAGS Verwendung (in MASM Syntax)

pushf     ; mov EFLAGS to stack 
bts dword ptr [esp], 11 ; set OF flag 
popf      ; write it back to status register 

und jeweils verwenden folgenden wird die von Flag zurückgesetzt:

pushf     ; mov EFLAGS to stack 
btr dword ptr [esp], 11 ; reset OF flag 
popf      ; write it back to status register 
+3

'or' oder' and' mit einem Speicherziel ist weniger uops als 'bts [mem], imm auf Intel-CPUs. Selbst mit einer sofortigen Bitzahl sind 'bts' und Freunde mit einem Speicherziel nicht so effizient, also vermeide sie im Allgemeinen mit Speicheroperanden, außer wenn du einen atomaren (' lock') Test-and-set benötigst. –

1

Viele Befehle klare OF als Nebenwirkung, zum Beispiel test. Als solche können Sie etwas wie test eax, eax schreiben und das wird OF löschen, obwohl es andere Flags beeinflussen wird. Du hast nicht angegeben, ob das erlaubt ist.

Um OF einzustellen, können Sie einige Operationen ausführen, die es einstellen. Fügen Sie zum Beispiel 1 zur größten positiven Zahl: mov al, 0x7f; add al, 1

Alternativ können Sie eine Kopie des Flags auf dem Stapel machen mit pushf, ändern Sie es nach Ihren Wünschen und es dann popf mit zurück.

+0

Sie sollten in Erwägung ziehen, Ihre Antwort hier zu löschen und sie in das Duplikat zu verschieben. Oder indem Sie diese Frage markieren und einen Moderator bitten, alle seine Antworten in das Duplikat einzufügen. –

Verwandte Themen