Je souhaite écrire un code simple (ou un algorithme) pour activer/désactiver le drapeau de débordement. Pour définir OF, je sais que je peux utiliser des valeurs signées. Mais comment puis-je l'effacer ?
Réponse
Trop de publicités?Il existe de nombreuses solutions possibles.
Par exemple, test al, al
effacera le OF
sans affecter le contenu du registre.
Ou, si vous ne voulez pas affecter les autres drapeaux, vous pouvez simplement modifier directement l'attribut *FLAGS
registre. Par exemple, en 32 bits, cela ressemblerait à :
pushfd ; Push EFLAGS onto the stack
and dword [esp], ~0x800 ; Clear bit 11 (OF)
popfd ; Pop the modified result back into EFLAGS
Edit : Changé <code>or al, al</code> à <code>test al, al</code> par <a href="https://stackoverflow.com/users/224132/peter-cordes">Peter Cordes </a>Recommandation. (Les effets sont les mêmes, mais cette dernière est meilleure pour des raisons de performance).