3

x86 アセンブリでは、任意の初期レジスタ構成で動作する 1 つの命令のみでパリティ フラグをクリアできますか?

これは、フラグを設定する任意の操作 (明示的に を除く) で、ビット数が奇数movの結果レジスタを作成することと同じです。

対照的に、パリティ フラグの設定は 1 つの命令で実行できます。

cmp bl, bl

また、次の 2 つの命令でパリティ フラグをクリアする方法は多数あります。

and bl, 0 
or  bl, 1

ただし、1 命令の方法はとらえどころのないままです。

4

3 に答える 3

3

これを試して:

foo:  cmp byte [foo],0x7F

注: このcmp命令の最初のバイトは 0x80 で、0x80-0x7F = 0x01 です。

于 2017-11-21T14:31:29.960 に答える
2

ありえない。

2 つのコピーまたはレジスター ( or al, al など)に適用された場合、どの PF 変更コマンドも無条件に奇数パリティーの結果を生成することはできません。同様に、どの算術コマンドも、結果を完全に定義するレジスタと定数 (および al, 0またはal, ffh など)に適用された場合、奇数パリティの結果を生成しません。第 2 オペランドが他の定数であるコマンドについては、結果はレジスタの初期値に依存し、それを制御することはできません。

実行環境の詳細がわかれば、よく知られたアドレスのメモリの内容を使用できる可能性があります。リアル モードの PC 互換機では、BIOS データ構造に依存できます。MS-DOS では、実行可能ヘッダーも同様です。

于 2010-07-16T19:21:01.097 に答える
0

mov(インタビューの質問のにおいがする)以外にそれを行う唯一の方法は、 TEST src, dst. こちらを参照してください。

現時点では、その条件を満たす x86 レジスタ/レジスタのペアは思い浮かびません。

于 2010-07-16T19:57:50.803 に答える