Assembly-programming-assembly-logical-instructions
アセンブリ-論理命令
プロセッサの命令セットは、AND、OR、XOR、TEST、およびNOTのブール論理命令を提供し、プログラムの必要性に応じてビットをテスト、設定、およびクリアします。
これらの指示の形式-
Sr.No. | Instruction | Format |
---|---|---|
1 | AND | AND operand1, operand2 |
2 | OR | OR operand1, operand2 |
3 | XOR | XOR operand1, operand2 |
4 | TEST | TEST operand1, operand2 |
5 | NOT | NOT operand1 |
すべての場合の最初のオペランドは、レジスタまたはメモリのいずれかにあります。 2番目のオペランドは、レジスタ/メモリまたは即値(定数)にあります。 ただし、メモリ間操作はできません。 これらの命令は、オペランドのビットを比較または一致させ、CF、OF、PF、SF、およびZFフラグを設定します。
AND命令
AND命令は、ビット単位のAND演算を実行して論理式をサポートするために使用されます。 両方のオペランドの一致するビットが1の場合、ビット単位のAND演算は1を返します。それ以外の場合は0を返します。 たとえば-
AND演算は、1つ以上のビットをクリアするために使用できます。 たとえば、BLレジスタに0011 1010が含まれているとします。 上位ビットをゼロにクリアする必要がある場合は、0FHとANDします。
別の例を取り上げましょう。 特定の数値が奇数か偶数かを確認する場合、簡単なテストは、数値の最下位ビットを確認することです。 これが1の場合、数値は奇数です。それ以外の場合、数値は偶数です。
番号がALレジスタにあると仮定すると、私たちは書くことができます-
次のプログラムはこれを示しています-
例
上記のコードをコンパイルして実行すると、次の結果が生成されます-
のように、奇数レジスタでaxレジスタの値を変更します-
プログラムは以下を表示します。
同様に、レジスタ全体をクリアするには、00HでANDできます。
OR命令
OR命令は、ビット単位のOR演算を実行して論理式をサポートするために使用されます。 一方または両方のオペランドの一致するビットが1である場合、ビット単位のOR演算子は1を返します。 両方のビットがゼロの場合、0を返します。
例えば、
OR演算を使用して、1つ以上のビットを設定できます。 たとえば、ALレジスタに0011 1010が含まれている場合、4つの下位ビットを設定する必要があり、値0000 1111、つまりFHとORすることができます。
例
次の例は、OR命令を示しています。 値5と3をそれぞれALレジスタとBLレジスタに保存してから、命令、
ALレジスタに7を保存する必要があります-
上記のコードをコンパイルして実行すると、次の結果が生成されます-
XOR命令
XOR命令は、ビット単位のXOR演算を実装します。 XOR演算は、オペランドのビットが異なる場合にのみ、結果のビットを1に設定します。 オペランドからのビットが同じ場合(両方とも0または両方1)、結果のビットは0にクリアされます。
例えば、
オペランドとそれ自身の XORing は、オペランドを 0 に変更します。 これは、レジスタをクリアするために使用されます。
テスト命令
TEST命令はAND演算と同じように機能しますが、AND命令とは異なり、第1オペランドを変更しません。 したがって、レジスタ内の数値が偶数か奇数かを確認する必要がある場合は、元の数値を変更せずにTEST命令を使用してこれを行うこともできます。
NOT命令
NOT命令は、ビット単位のNOT演算を実装します。 NOT演算は、オペランドのビットを反転します。 オペランドは、レジスタまたはメモリにあります。
例えば、