8086 論理演算命令

6. 論理演算命令

OPソース:8/16ビット汎用レジスタ、メモリオペランドまたは即値データ

OP オブジェクト: 汎用レジスタとメモリ オペランド

"not" 操作を除いて、他の命令は OF=CF=0 になります。

1.論理積演算

特定のビットを変更したり、ビットの内容をテストしたりするために使用できます

2. 論理 OR 演算 (1 から 1、0 からすべて 0)

形式: OR OP 項目、OP ソース

機能: 2 つのオペランドに対して OR 演算を実行し、結果を OP 宛先に返します。

説明: 特定の単語を組み合わせたり、特定の位置を 1 に設定したりするために使用できます。

例:

MOV AX、8888H;

OR AX, 00FFH; AX=88FFHH, AX の下位 8 ビットを 1 に設定し、他のビットは変更しない、つまり、対応する 1 ビットは 1 であり、対応する 0 ビットは変更しない。

例: AL の非結合 BCD コードを ASCII コードに変換します。

またはAL、30H

3. 論理 XOR 演算命令 (0 と同じ、1 とは異なる)

形式: XOR OP デスティネーション、OP ソース

機能: 2 つのオペランドに対して XOR 演算が実行され、結果が OP に返されます。

説明: 特定の 2 進数をビット単位で反転するか、特定のレジスタを 0 にクリアするために使用されます。

例: XOR AL, 0FFFH; AL データのビットごとのネゲート

例:MOV AX、3333H

XOR AX、00FFH;

結果:AX=33CCH AH データは変化せず、AL データはネゲート、つまり、対応する 0 は変化せず、対応する 1 はネゲートされます。

例: レジスタを 0 にクリアします (AX をクリアする目的を達成するために 4 つの命令があります):

XOR AL、AL; AL清0

移動斧、0

サブアックス、アックス

AND AX,0

4. 論理否定演算命令

フォーマット: OP ではない

機能: オペランドをビットごとに反転し、リモートに送り返します。

例:

ムーヴアックス、1

斧ではありません。AX=0FFFEH

知らせ:

(1) この命令は、否定コード命令ではなく、否定演算のみを実行し、符号ビットも否定します。

(2) フラグビットには影響しません

5. テスト手順

フォーマット: TEST OPアイテム、OPソース

機能: OP デスティネーションと OP ソースで AND 演算を実行し、結果を返さず、結果に従ってフラグのみを設定します。

説明: 主に、デスティネーション オペランドの一部のビットが 1 または 0 であることを検出するために使用されます。

例: AX の D15 ビットが 1 か 0 かをテストする

TEST AX, 8000H; D15 が 1 の場合、ZF=0、それ以外の場合、ZF=1

要約:

(1) AND OR XOR TEST はすべてフラグに作用し、CF=0、OF=0 となり、その結果により PF、SF、ZF が決定され、AF は無意味になります。このような命令は、CF をクリアするために使用でき、よく使用されます。分割と綴り用。

(2) NOT はフラグに影響を与えません

例 

おすすめ

転載: blog.csdn.net/m0_59069134/article/details/126908475