スポンサーリンク

SR命令

識別番号

01101

 

IR2の値の使い方

メモリ回路の読込み先アドレス番号

 

動作の詳細

SR命令では「WR」の値をメモリ回路の「IR2」で指定されたアドレスの内容分だけ右側へシフトした結果を出力します。(例:「WR」の値が00001110の状態で「IR2」で指定されたアドレスの内容が2であった場合、SR命令の結果は00000011となります。)計算の結果は再び「WR」へと書き込まれます。またこの時フラグの書き換えも同時に行われます。フラグの値は計算の結果に桁あふれが発生した時は「1」、桁あふれが発生しなかった時は「0」になります。

※桁あふれとは計算の結果が8ビットで表せる範囲を超えた場合のことを言います。右シフトの結果、最下位ビットの1つ右側のビットが1になった場合は桁あふれの状態と判定されます。なお、桁あふれの判定対象になるのは最下位ビットの1つ右側のビットだけですので、多ビットシフトを行う場合は最下位ビットの2つ以上右側のビットへ1が移動したとしても桁あふれの判定の対象とはならないので注意が必要です。

 

実際の回路の詳細動作

RAM読込1 ※全命令共通動作 JUMP命令の詳細動作ページを参照

IR1読込 ※全命令共通動作 JUMP命令の詳細動作ページを参照

RAM読込2 ※全命令共通動作 JUMP命令の詳細動作ページを参照

 

IR2読込

「IR2」レジスタへクロック信号を送り、命令の8ビット分(読込み先アドレス番号)を「IR2」へ記憶する。同時に今後の動作に備えて「M1」と「M3」は上側の経路に接続された状態にしておき、ALUのコントロール端子は右側シフトの結果が出力されるよう設定しておく。

 

スポンサーリンク

実行1

この段階では「HR」レジスタの値と「IR2」レジスタの値が連結した状態で16ビットのアドレス番号となり、「M3」を通して「RAM」のアドレス入力端子へと接続されている。この状態で「RAM」へ読出し用クロック信号を送り、指定されたアドレス番号の内容が出力端子へ読み出されるようにしておく。さらにこの段階では「PC」の値に+1だけカウントアップされた値が「M2」を通して「PC」の入力端子へと接続されている。この状態で「PC」へクロック信号を送り、「PC」の値を+1だけカウントアップする。

 

実行2

この段階では「RAM」の出力信号がB端子へ、「WR」の値がA端子へと接続されている。この状態で「ALU」へクロック信号を送り、B端子の数値分だけA端子の値を右側シフトした結果が「ALU」の出力端子へ出力された状態にしておく。

 

実行3

この段階では「ALU」の出力信号が「M1」を通して「WR」の入力端子へと接続されている。この状態で「WR」へクロック信号を送り、「ALU」の出力信号が「WR」へ記憶されるようにする。さらに次の命令に備えて「M3」は下側の経路に接続された状態に戻しておく。

 

CPUの設計図

 

<戻る       次へ>

 

スポンサーリンク