次の操作をサポートする2つの8ビット入力AおよびBと制御入力x、y、zを備えたALUを設計する必要があります。
x y z | operation
0 0 0 | S = A-B
0 0 1 | S = A+B
0 1 0 | S = A*8
0 1 1 | S = A/8
1 0 0 | S = A NAND B (bitwise)
1 0 1 | S = A XOR B (bitwise)
1 1 0 | s = reverse the bits of A
1 1 1 | S = NOT A (bitwise)
これは、8ビット加算器と算術論理拡張器を使用して行われることになっています。私の教科書を読んでみると、ALエクステンダーの目的は、入力ビットを変更して、多くの追加コンポーネントではなく加算器を使用してすべてを実行できるようにすることです(または、少なくともそれは私が理解していることです) )。たとえば、AL-extenderはビットを2の補数にして、加算器が減算を行うようにします。同様に、ビットごとの論理演算では、ビットを適切に変更し、加算器入力の1つをゼロにして、結果が適切に渡されるようにすることができます。
しかし、私は乗算について正確に何をしますか?私の本は非常に漠然としているので、ALエクステンダーが加算器に機能させるために何か賢いことを要求するかどうかはわかりません(私の場合は8回加算するだけですか?...ハハ)、またはそこに乗数を投げることができます。私は除算について読まなければならないでしょうが、それは乗算に似ていると思います。
さて、とにかく、肝心なことはまだ、ALエクステンダーに何を "許可"しておくことができるか、またはその中に含めることができるかです。加算器に供給できるように入力を変更することが唯一の目的ですか?
*編集:まあ、それは8による乗算/除算なので、これは左または右に3シフトすることで簡単に実行できます。そこにシフターを追加した場合、実際の/適切なALエクステンダーはまだありますか?(多分私はこれを完全な初心者として考えすぎています...)