次のことを行うには、アセンブリで最大 2 つの命令を記述する必要があります。
- レジスタ AL のビット 0 と 7 をクリア、つまり 0 にする
- レジスタ AL のビット 3 と 4 をセット、つまり 1 にします。
- レジスタ AL のビット 1 とビット 5 を補数します。
- 値を変更せずに、レジスタ AL の他のすべてのビットをそのまま保持します。
ここでのトリックは、次のことを行うことです。
OR 命令を使用して、ビット 0、3、4、および 7を設定します。
XOR 命令を使用して、ビット 0、1、5、および 7を補完します。
ビット 0 と 7 は最初に (1) でセットされ、次に (2) でクリアされることに注意してください。
これはあなたの宿題なので、実際の asm の指示はあなたに任せます。
256 個の「結果」値の配列を定義する 1 つの DB 命令と、al の現在の値をインデックスとして使用して、この配列の要素を al に移動する 1 つの move 命令。
それはうまくいきませんか?
DB は実際には実行時に実行される命令ではなく、コンパイル時の宣言であるため、これは実際には単一命令のソリューションでさえあるとさえ主張されるかもしれません。