4. 分岐を使ったプログラム

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 7" なので,"アキュムレータ" の値 "0" から7番地の値である "−4" を 引き,結果を "アキュムレータ" に格納します.

3. "BRP 4" による条件つきのジャンプ

BRP命令は

という命令です.ここでは "アキュムレータ" の値は正なので,"プログラムカウンタ" の値を "4" にすることで,4番地の命令が実行されます.

仮に "アキュムレータ" の値が負だった(7番地の値が正だった)場合は,次の命令である3番地の命令が実行されます.

4."STA 7" の実行

"アキュムレータ" の値,この場合は "4"を, "メインメモリ"の7番地に書き出します.

5. "HLT" によるプログラム終了

HLT命令によって,プログラムが終了します.このとき7番地に格納されている値は、プログラム開始時の7番地の値の絶対値となっています.

分岐命令

分岐を行う命令には,以下のようなものがあります.

演習: 分岐命令の動きを確かめる

上で説明したサンプルプログラムの,7番地の値を "−5" から自分の誕生月に変えるとどうなるか,確かめてみましょう.

(注) https://en.wikipedia.org/wiki/Little_man_computer では,メモリおよびアキュムレータに入れられる値を 0-999 の範囲と定義していていますが,このシミュレータでは,-999-999の範囲の数をメモリおよびアキュムレータに入れることができます.