機械語において、加算命令とは、最も単純化した場合、あるプロセッサレジスタ(以降、レジスタ)の値に、別のレジスタの値もしくは即値を加算する命令のことです。
なお、一般的には、加算命令では、ALUの加算器を使います。
また、加算命令で加算する二つの値を符号ビット付き2進数として扱えば、加算命令で引き算も行えます。
加算命令では、少なくとも以下の二つのオペランドを指定します。
・加算先となるレジスタを指定するオペランド
・加算するレジスタや即値を指定するオペランド
機械語の命令の実行を基礎として、加算命令は、以下のように実行されます。
1. 「レジスタAを指定するオペランド」を制御信号として、レジスタAの値が加算器に入力される。(詳細は、レジスタの指定を参照)
2. 「レジスタBを指定するオペランド」を制御信号として、レジスタBの値が加算器に入力される。
3. 加算結果がデータバスに出力される。
4. 「レジスタAを指定するオペランド」を制御信号として、レジスタAの書き換えが有効にされる。
5. クロックの立ち上がりエッジでレジスタAにデータバスの値が書き込まれる。
1. 「レジスタAを指定するオペランド」を制御信号として、レジスタAの値が加算器に入力される。(詳細は、レジスタの指定を参照)
2. 「即値を指定するオペランド」の値が加算器に入力される。(詳細は、即値の指定を参照)
3. 加算結果がデータバスに出力される。
4. 「レジスタAを指定するオペランド」を制御信号として、レジスタAの書き換えが有効にされる。
5. クロックの立ち上がりエッジでレジスタAにデータバスの値が書き込まれる。
以下の方法でレジスタの値にメインメモリの値を加算できます。
1. ロード命令でメモリアドレスBに保存されている値をレジスタBにコピーする。
2. 加算命令を使って、レジスタAの値にレジスタBの値を加算する。
以下の方法でメインメモリの値にレジスタの値や即値を加算できます。
1. ロード命令でメモリアドレスAに保存されている値をレジスタAにコピーする。
2. 加算命令を使って、レジスタAの値に他のレジスタの値や即値を加算する。
3. ストア命令でレジスタAの値をメモリアドレスAにコピーする。
以下の方法で、あるメインメモリの値に別のメインメモリの値を加算できます。
1. ロード命令でメモリアドレスAに保存されている値をレジスタAにコピーする。
2. ロード命令でメモリアドレスBに保存されている値をレジスタBにコピーする。
3. 加算命令を使って、レジスタAの値にレジスタBの値を加算する。
4. ストア命令でレジスタAの値をメモリアドレスAにコピーする。