1. プログラムの入力
左側のテキストフィールドに以下のプログラムをコピー & ペーストして,「Submit」ボタンを押します.
LDA 6 SUB 7 BRP 4 HLT STA 7 HLT DAT 0 DAT -4
これは,"7番地の内容の絶対値をとって7番地に入れる" という内容のプログラムです.これを使って,分岐について説明します.
1. "LDA 6" の実行
"アキュムレータ"に6番地の値「0」を読み込みます.2. "SUB 7" の実行
SUB命令は
- SUB n: アキュムレータの値からn番地の値を引く
という命令です.ここでは "SUB 7" なので,"アキュムレータ" の値 "0" から7番地の値である "−4" を 引き,結果を "アキュムレータ" に格納します.
3. "BRP 4" による条件つきのジャンプ
BRP命令は
- BRP n: アキュムレータの値が非負(正または0)の時に,プログラムカウンタの値をnにする(プログラムの実行をn番地にジャンプする)
という命令です.ここでは "アキュムレータ" の値は正なので,"プログラムカウンタ" の値を "4" にすることで,4番地の命令が実行されます.
仮に "アキュムレータ" の値が負だった(7番地の値が正だった)場合は,次の命令である3番地の命令が実行されます.
4."STA 7" の実行
"アキュムレータ" の値,この場合は "4"を, "メインメモリ"の7番地に書き出します.
5. "HLT" によるプログラム終了
HLT命令によって,プログラムが終了します.このとき7番地に格納されている値は、プログラム開始時の7番地の値の絶対値となっています.
分岐命令
分岐を行う命令には,以下のようなものがあります.- BRA n: 無条件でn番地にジャンプ
- BRP n: アキュムレータの値が非負(正またはゼロ)のときにn番地にジャンプ
- BRZ n: アキュムレータの値がゼロのときにn番地にジャンプ
演習: 分岐命令の動きを確かめる
上で説明したサンプルプログラムの,7番地の値を "−5" から自分の誕生月に変えるとどうなるか,確かめてみましょう.