ED21に付属のサンプルプログラム "(4) n番地の内容の絶対値をとる" を使って,分岐について説明します.
1. "SUB 4" の実行
SUB命令は
- SUB n: アキュムレータの値からn番地の値を引く
という命令です.ここでは "SUB 4" なので,"アキュムレータ" の初期状態の値 "0" から4番地の値である "−5" を 引き,結果を "アキュムレータ" に格納します.
2. "JM 3" による条件つきのジャンプ
JM命令は
- JM n: アキュムレータの値が負の時に,プログラムカウンタの値をnにする(プログラムの実行をn番地にジャンプする)
という命令です.ここでは "アキュムレータ" の値は負ではないので,ジャンプせずに次の命令を実行します.
かりに "アキュムレータ" の値が負だった(もともとの値が正だった)場合は, "プログラムカウンタ" の値を "3" にすることで,3番地の命令が実行されます.
3. "STORE 4" の実行
"アキュムレータ" の値,この場合は "5"を, "メインメモリ"の4番地に書き出します.
4. "STOP 0" によるプログラム終了
STOP命令によって,プログラムが終了します.
分岐命令
分岐を行う命令には,以下のようなものがあります.- J n: 無条件でn番地にジャンプ
- JM n: アキュムレータの値が負のときにn番地にジャンプ
- JZ n: アキュムレータの値がゼロのときにn番地にジャンプ
演習: 分岐命令の動きを確かめる
上で説明したサンプルプログラム"(4) n番地の内容の絶対値をとる" の,4番地の値を "−5" から自分の誕生月に変えるとどうなるか,確かめてみましょう.