スポンサーリンク

JZC命令

識別番号

00010

 

IR2の値の使い方

ジャンプ先のアドレス番号

 

動作の詳細

JZC命令はALUの持つフラグという信号が「1」の状態の時にだけプログラムカウンタの値を書き換える命令です。ALUの持つフラグという信号はALUで演算を行った時、その答えが0になったり桁あふれを起こしたときにだけ「1」になる信号です。「1」の状態になったフラグは次の演算で0以外の答えが出たり、桁あふれが起きなかったりした場合は「0」の状態に戻ります。JZC命令はALUを用いた演算命令と一緒に使うことで特定の条件のときにだけ処理の流れを変える「条件分岐」という機能を実現します。フラグが「1」の状態のときにJZC命令が実行されると、JUMP命令と同じようにIR2で指定されたアドレス番号へと処理の流れを飛ばします。フラグが「0」の状態のときにはJZC命令が実行されても何も起こらず、処理の流れはJZC命令の次の命令へ移ります。

 

実際の回路の詳細動作

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

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

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

 

IR2読込 [フラグが0の時]

「IR2」レジスタへクロック信号を送り、命令の8ビット分(ジャンプ先のアドレス番号)を「IR2」へ記憶する。フラグが0なのでジャンプ動作は行わない。なので「M2」は今後の動作に備えて下側の経路に接続された状態にしておく。

 

実行1 [フラグが0の時]

この段階では「PC」の値に+1だけカウントアップされた値が「M2」を通して「PC」の入力端子へと接続されている。この状態で「PC」へクロック信号を送り、「PC」の値を+1だけカウントアップする。

 

実行2 [フラグが0の時]

動作完了。

 

スポンサーリンク

実行3 [フラグが0の時]

動作完了。

 

IR2読込 [フラグが1の時]

「IR2」レジスタへクロック信号を送り、命令の8ビット分(ジャンプ先のアドレス番号)を「IR2」へ記憶する。フラグが1なのでジャンプ動作を行う。なので「M2」は今後の動作に備えて上側の経路に接続された状態にしておく。

 

実行1 [フラグが1の時]

この段階では「HR」レジスタの値と「IR2」レジスタの値が連結した状態で16ビットのアドレス番号となり、「M2」を通して「PC」の入力端子へと接続されている。この状態で「PC」へクロック信号を送り、「PC」の内容を指定されたアドレス番号へと書き換える。

 

実行2 [フラグが1の時]

次の命令に備えて「M2」は下側の経路に接続された状態に戻しておく。

 

実行3 [フラグが1の時]

動作完了。

 

CPUの設計図

 

<戻る       次へ>

 

スポンサーリンク