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