6. ラベルの利用

1. アドレス付きのプログラム

反復処理の例として用いた"1から10までの和"を計算するプログラムは以下のように命令とデータだけが記述されていました.

しかし,実際にどのデータを用いるのか,プログラムはどこにジャンプするのかを理解するためには,アドレス値(番地)が欠かせません.つまり,以下のようにアドレスと命令が並んで表記されている方が良いと考えられます.

LMCでは,このアドレス付きのプログラムも実行できます.このアドレス付きのプログラムをプログラム領域にコピー&ペーストした後に,"Submit"ボタンを押してメインメモリに読み込んでください.

アドレス付きのプログラム

2. アドレス付きプログラムの実行

プログラムがメインメモリに読み込めたのを確認したら,"RUN"をクリックしてプログラムを走らせてみましょう.実行開始の際には,"PROGRAM COUNTER"と"ACCUMULATOR"の値はともに「0」になっているはずです.

アドレス付きのプログラムの実行

プログラムは10番地の"000 (HLT)"で終了します.そのときに"OUTPUT"には「55」と表示されており,前のプログラムと同じ結果が得られるはずです.

プログラムの実行結果

3. ラベルを用いたプログラム

アドレス値を数えるのは単調な作業ですが,実際にはメインメモリに読み込まれる際に確定されるものです.また命令で必要とされるアドレス値はデータの所在やジャンプ先などに限られています.LMCのアセンブリ言語では,機械語の命令コード(たとえば"511")の代わりに文字列の命令(たとえば"LDA 11")で記述できます.アドレス値についても,次のように文字列の「ラベル」を利用できるようになっています.

このラベルを用いたプログラムをプログラム領域にコピー&ペーストした後に,"Submit"ボタンを押してメインメモリに読み込んでください.

ラベルを用いたプログラム

4. ラベルを用いたプログラムの実行

プログラムをメインメモリに読み込んだ結果は,アドレス値を用いたプログラムと同じになっていることを確認しましょう.そのうえで"RUN"をクリックしてプログラムを走らせてみましょう.実行開始の際には,"PROGRAM COUNTER"と"ACCUMULATOR"の値はともに「0」になっているはずです.

ラベルを用いたプログラムの実行

プログラムは10番地の"000 (HLT)"で終了します.アドレス値を用いたプログラムと同様に"OUTPUT"には「55」と表示されているはずです.

プログラムの実行結果