ラベル欄 | 命令コード欄 | オペランド欄 |
---|---|---|
label | START | [実行開始番地] |
この命令の役割は,プログラムの実行開始番地(アドレス)をアセンブラーに対して指示す ることである.プログラムの先頭に必ず書く必要があり,これが無いと,どこからプログ ラムを実行するか分からない.プログラム実行時に,このSTART命令が示すアドレス が最初のPR(プログラムレジスタ)の値になる.これが実行開始番地である.
リスト1のプログラムでSTART命令の役割を考える.このプログラムを アセンブラーが機械語に変換すると,図2のようになる.START とEND命令はアセンブラ命令であるため,マシン語に変換されない.他のアセンブラ命令, DCやDSは,それが示すデータに変換される. [caption=CASL IIのプログラム例.3+5を計算する,label=prog:add] program/add.cas
START命令はマシン語に変換されないが,プログラマーはアセンブラーに,このプロ グラムはラベルBEGINから実行すると言うことを伝えなくてはならない.ラベル BEGINは,最初に実行する命令
LD GR1,Aの先頭番地が格納されているアドレスを示す.そのアドレスがプログラム実行開始時にプ ログラムレジスターPRにセットされる.それを確実にするために,START命令がある. この命令で,最初に実行させる命令を示すのである.CPUは,その番地に書かれた0と1の 集まりは命令と解釈する.
START命令など無くして,最初の行から実行するように約束することも出来るであろ う.こうすると,いつも先頭の行から実行することになり,実際プログラムを書く場合不 便なことがある.START命令が有った方が,便利なのである.
もし,オペランド欄に記述が無い場合,START命令の次の行からプログラムの実行は 開始することになっている.START命令のラベルは,そのプログラム自身で参照されるこ とはないが,絶対に必要である.ほかのプログラム,たとえばOSがプログラムの実行を指 示する場合,このラベルが使われる.そしてこのラベルが示すアドレスは,このプログラ ムの実行開始番地になる.したがって,図1のラベルPGMとBEGINは同じアドレ ス#0020である.
ラベル欄 | 命令コード欄 | オペランド欄 |
---|---|---|
END |
この命令の役割は,プログラムの終わりをアセンブラーに対して知らせることである.プ ログラムの最後に必ず書く必要があり,これが無いと,どこでプログラムが終わったのか 分からない.プログラムの実行が終わったところではなく,プログラマーが記述したソー スコードの終わりを示す.
END文はラベルをつけることはできない.この命令は,主記憶装置に格納されないの
で,対応するアドレスが無いからである.また,処理の対象となるオペランドも無いので,
書くことはできない.しかし,END文の後に注釈は許される.アセンブラーは,これ
は無視する3.