6

オーバーフロー フラグを設定/クリアするための簡単なコード (またはアルゴリズム) を書きたいと思います。OF の設定には、符号付きの値を使用できることがわかっています。しかし、どうすればそれをクリアできますか?

4

3 に答える 3

3

多くの可能な解決策があります。

たとえば、レジ​​スタの内容に影響を与えずにフラグをtest al, alクリアします。OF


または、他のフラグに影響を与えたくない場合は、*FLAGSレジスタを直接変更できます。たとえば、32 ビットでは、次のようになります。

pushfd                   ; Push EFLAGS onto the stack
and dword [esp], ~0x800  ; Clear bit 11 (OF)
popfd                    ; Pop the modified result back into EFLAGS

編集: Peter Cordesの推奨に従って変更or al, alされました。(効果は同じですが、パフォーマンス上の理由から後者の方が優れています)test al, al

于 2016-04-22T17:05:05.070 に答える