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