(1) CASLⅡは、COMETⅡのためのアセンブラ言語である。
(2) プログラムは、命令行および注釈行からなる。
(3) 1命令は1命令行で記述し、次の行へ継続できない。
(4) 命令行および注釈行は、次に示す記述の形式で、行の1文字目から記述する。
行の種類 |
記述の形式 |
命令行 |
オペランドあり |
[ラベル]{空白}{命令コード}{空白}{オペランド}[{空白}[{;}[コメント]] |
オペランドなし |
[ラベル]{空白}{命令コード}[{空白}[{;}[コメント]] |
注釈行 |
[空白]{;}[コメント] |
注 |
[ ] |
[ ]内の指定が省略できることを示す。 |
{ } |
{ }内の指定が必須であることを示す。 |
ラベル |
その命令の(先頭の語の)アドレスを他の命令やプログラムから参照するための名前である。
長さは1〜8文字で、先頭の文字は英大文字でなければならない。
以降の文字は、英大文字又は数字のいずれでもよい。
なお、予約語であるGR0〜GR7は、使用できない。 |
空白 |
1文字以上の間隔文字の列である。 |
命令コード |
命令ごとに記述の形式が定義されている。 |
オペランド |
命令ごとに記述の形式が定義されている。 |
コメント |
覚え書きなどの任意の情報であり、処理系で許す任意の文字を書くことができる。 |
アセンブラ命令は、アセンブラの制御などを行う。
START命令は、プログラムの先頭を定義する。
実行開始番地は、そのプログラム内で定義されたラベルでしていする。
指定がある場合はその番地から、省略した場合はSTART命令の次の命令から、実行を開始する。
また、この命令につけられたラベルは、他のプログラムから入口名として参照できる。
END命令は、プログラムの終わりを定義する。
DS命令は、指定した語数の領域を確保する。
語数は、10進定数(≧0)で指定する。語数を0とした場合、領域は確保しないが、ラベルは有効である。
DC命令は、定数で指定したデータを(連続する)語に格納する。
定数には、10進定数、16進定数、文字定数、アドレス定数の4種類がある。
定数の種類 |
書き方 |
命令の説明 |
10進定数 |
n |
nで指定した10進数値を、1語の2進数データとして格納する。
ただし、nが−32768〜32767の範囲にないときは、その下位16ビットを格納する。 |
16進定数 |
#h |
hは4桁の16進数(16進数字は0〜9,A〜F)とする。
hで指定した16進数値を1語の2進数データとして格納する(0000≦h≦FFFF)。 |
文字定数 |
’文字列’ |
文字列の文字数(>0)分の連続する領域を確保し、最初の文字は第1語の下位8ビットに、
2番目の文字は第2語の下位8ビットに、・・・と順次文字データとして格納する。
各語の上位8ビットには0のビットが入る。
文字列には、間隔および任意の図形文字を書くことができる。
ただし、アポストロフィ(’)は2個続けて書く。 |
アドレス定数 |
ラベル |
ラベルに対応するアドレスを1語の2進数データとして格納する。 |
マクロ命令は、あらかじめ定義された命令群とオペランドの情報によって、
目的の機能を果たす命令群を生成する(語数は不定)。
IN命令は、あらかじめ割り当てた入力装置から、1レコードの文字データを読み込む。
入力領域は、256語長の作業域のラベルであり、この領域の先頭から、
1文字を1語に対応させて順次入力される。レコードの区切り符号(キーボ−ド入力の復帰符号など)は、
格納しない。格納の形式は、DC命令の文字定数と同じである。入力データが256文字に満たない場合、
入力領域の残りの部分は実行前のデータを保持する。入力データが256文字を超える場合、
以降の文字は無視される。
入力文字長領域は、1語長の領域のラベルであり、入力された文字の長さ(≧0)が2進数で格納される。
ファイルの終わり(end of file)を検出した場合は、−1が格納される。
IN命令を実行すると、GRの内容は保存されるが、FRの内容は不定となる。
OUT命令は、あらかじめ割り当てた出力装置に、文字データを、1レコードとして書き出す。
出力領域は、出力しようとするデータが1文字1語で格納されている領域のラベルである。
格納の形式は、DC命令の文字定数と同じであるが、
上位8ビットは、OSが無視するので0でなくてもよい。
出力文字長領域は、1語長の領域のラベルであり、
出力しようとする文字の長さ(≧0)を2進数で格納しておく。
OUT命令を実行すると、GRの内容は保存されるが、FRの内容は不定となる。
RPUSH命令は、GRの内容を、GR1、GR2、・・・、GR7の順でスタックに格納する。
RPOP命令は、スタックの内容を順次取り出し、GR7、GR6、・・・、GR1の順でGRに格納する。