算術系命令
| 演算種類 | 動作 | 備考 |
|---|---|---|
| 加算(ADD) | 被演算数 + 演算数 | 算術的な加算を行います。またインデクスアドレッシングにおけるアドレス計算の際にも使用されます。 |
| デクリメント(DEC) | 被演算数 − 1 | デクリメント命令や、スタックポインタ変更に使用します。 |
| インクリメント(INC) | 被演算数 + 1 | インクリメント命令や、スタックポインタ変更に使用します。 |
| 減算(SUB) | 被演算数 − 演算数 | 算術的な減算を行います |
論理系命令
| 演算種類 | 動作 | 備考 |
|---|---|---|
| 論理和(OR) | 被演算数 or 演算数 | 論理な和(or)を取ります。 |
| 排他的論理和(XOR) | 被演算数 xor 演算数 | 排他的な論理和(xor)を取ります。 |
| 論理積(AND) | 被演算数 and 演算数 | 論理な積(and)を取ります。 |
| 論理否定(NOT) | not 被演算数 | 1の補数を取ります。 |
シフト系命令
| 演算種類 | 動作 | 備考 |
|---|---|---|
| 算術右シフト(ASR) | 被演算数/2 | 算術的な1ビットの右シフトをします。意味的には2で割ったことになります。 |
| 算術左シフト(ASL) | 被演算数×2 | 算術的な1ビットの左シフトをします。意味的には2をかけたことになります。 |
| 論理右シフト(LSR) | (被演算数/2)&0x7fff | 論理的な1ビットの右シフトをします。 |
| 論理左シフト(LSL) | 被演算数×2 | 論理的な1ビットの左シフトをします。結果は算術左シフトと同じ結果に なりますが、フラグの変化が算術左シフトとは異なります。 |
| 右回転(ROR) | 被演算数の1ビット右回転 | |
| 左回転(ROL) | 被演算数の1ビット左回転 | |
| バイトスワップ(SWP) | 上位バイトと下位バイトの交換 | バイト単位の操作を行えるよう設けられた命令です。 |
特別な演算機能
| 演算種類 | 動作 | 備考 |
|---|---|---|
| パス(PAS) | 被演算数 | 演算的には意味がありません。しかし、3バス構成のプロセッサでは、レ ジスタ間データ転送命令などにおいて使用されます。1バス構成のプロセッサでは 必要ない機能です。 |
ALUを以下の手順で設計・シミュレーションします。
では、 デコーダ・シーケンサの入出力定義 についてみていきます。