24.4. Little Man Computer
教育用のLittle Man Computerシミュレータ(LMC)を使って,プログラムが実際にどのように動いているのか確認します.
24.4.4. 分岐を使うプログラム
分岐を使うと,より複雑な計算を行えます.例として絶対値を計算します.
分岐命令 #
分岐に関する主な命令に,以下があります.
- BRA n
- 無条件でn番地にジャンプ
- BRP n
- “ACCUMULATOR"の値が非負(正またはゼロ)のときにn番地にジャンプ
- BRZ n
- “ACCUMULATOR"の値がゼロのときにn番地にジャンプ
BR は branch,A は always, P は positive, Z は zero の先頭文字とつなげると,認識しやすいです.
通常の実行ではプログラムカウンタの値は1ずつ増えますが,ジャンプ実行時は指定の値 (n) になりますプログラムの入力 #
絶対値を計算する例題プログラムを,プログラム領域にコピー&ペーストして,“Submit"ボタンを押して,メインメモリに読み込んでください.2行目の BRP 3 が分岐です
24.4.6. ラベルの利用
プログラムとアドレス #
反復処理の例として用いた"1から10までの和"を計算するプログラムは以下のように命令とデータだけが記述されていました.
LDA 11
ADD 12
STA 11
LDA 12
SUB 13
STA 12
BRZ 8
BRA 0
LDA 11
OUT
HLT
DAT 0
DAT 10
DAT 1
しかし,実際にどのデータを用いるのか,プログラムはどこにジャンプするのかを理解するためには,アドレス値(番地)が欠かせません.つまり,以下のようにアドレスと命令が並べた表記の方が読みやすいです.
0 LDA 11
1 ADD 12
2 STA 11
3 LDA 12
4 SUB 13
5 STA 12
6 BRZ 8
7 BRA 0
8 LDA 11
9 OUT
10 HLT
11 DAT 0
12 DAT 10
13 DAT 1
LMCでは,このアドレス付きのプログラムも実行できます.このアドレス付きのプログラムをプログラム領域にコピー&ペーストした後に,“Submit"ボタンを押してメインメモリに読み込んでください.
... このページを読む24.4.9. 参考: 命令セット
... このページを読む
このサイトは開発版の はいぱーワークブック です.