CASL U - コーディング形式 |
CASLのコーディング形式
CASLUとは、仮想計算機COMETUのためのアセンブラ言語である。命令は1行にひとつ書き、次の行に継続はできない。注釈(コメント)だけの行があってもよい。
CASLUを使ってプログラムを作成する(書く)ときは、プログラムを次のように欄に分けて書くようにすると分かりやすい。
ラベル欄 | 命令欄 | オペランド欄 |
ただし、プログラムをコンピュータに入力するときには、このような欄はないので、次の各欄の説明にしたがうこと。
(1) ラベル欄
ラベルは、その命令の先頭アドレスを表すものであり、ほかの命令やプログラムから参照されるときの名前である。例えば、次のようなときに使用する。
- 分岐命令の飛び先
分岐先の命令にラベルを付けておくと分岐命令で直接アドレスを書く代わりにラベルで指定することができる。- データを記憶する領域の名前
演算などに使用するデータはメモリに格納して使うことが多い。必要なデータを取り出すためにはデータを記憶したアドレスを指定しなければならない。しかし、たくさんのデータがあると、どのデータがどこのアドレスにあったかを覚えておくことは困難にある。そこで、ラベルに変数と同じような働きをさせる。
ラベルは、行の先頭から英大文字で始まる8文字以内の英大文字と数字で書く。ただし、予約語であるGR0〜GR7は使えない。
(2) 命令欄
命令は、2文字目以降に書く。ラベルを付けたときは、ラベルとの間には1つ以上の空白をあける。
(3) オペランド欄
オペランドとは、命令を補足するものである。オペランドの個数は、命令によって違う。命令との間には1つ以上の空白をあける。
(4) 注釈(コメント)
行の中に ;(セミコロン)があると、それ以降、行の終わりまでがコメントになる。
プログラム例
次のプログラムはメモリに記憶した2つのデータを加算して、結果をメモリに出力するものである。
;加算のプログラム例 REI START ;プログラムの始まり LD GR0, DAT1 ;DAT1の内容(10)をGR0に記憶する。 ADDA GR0, DAT2 ;GR0とDAT2の内容(22)を加算する。 ST GR0, ANSWER ;GR0の内容をANSWER番地に出力する。 RET ;OSに戻る。 DAT1 DC 10 ;データの定義 DAT2 DC 22 ;データの定義 ANSWER DS 1 ;1語分の領域確保 END ;プログラムの終わり
プログラムの実行確認には、次のソフトウェアを使用させていただきました。 情報処理技術者試験 COMETII & CASLII シミュレータ InfoCASL
東京理科大学 情報処理技術者試験研究会 http://www.rs.kagu.sut.ac.jp/~infoserv/ |
CASLUの命令
命令は、4種類のアセンブラ命令(START,END,DS,DC)、4種類のマクロ命令(IN,OUT,RPUSH,RPOP)及び機械語命令(COMETUの命令)からなる。
アセンブラ命令は、アセンブラの制御などを行う。マクロ命令は、あらかじめ定義された命令群とオペランドの情報によって、目的の機能を果たす命令群を生成する(語数は不定)。
使い方などはプログラミングの中で説明していく。
定数の表し方
CASLUのプログラムの中で、定数をデータとして使用する。この定数の表し方(表記)は次のとおりである。
(1) 10進定数 … n
nで指定した10進数値を、1語の2進数データとして格納する。ただし、nが−32768〜32767の範囲にないときは、その下位16ビットを格納する。
例) 1, 23, -45
(2) 16進定数 … #h
hは4けたの16進数(16進数字は0〜9,A〜F)とする。hで指定した16進数値を1語の2進数データとして格納する(0000≦h≦FFFF)。
例) #0001, #0017, #FFD3
(3) 文字定数 … '文字列'
文字列の文字数(>0)分の連続する領域を確保し、最初の文字は第1語の下位8ビットに、2番目の文字は第2語の下位8ビットに、… と順次文字データとして格納する。各語の上位8ビットには0のビットが入る。
文字列には、間隔及び任意の図形文字を書くことができる。ただし、アポストロフィ(')は2個続けて書く。
例) 'A', 'BCD', '*kigou'
(4) アドレス定数 … ラベル
ラベルに対応するアドレスを1語の2進数データとして格納する。
CASL U | Copyright © 2003 Hiroshi Masuda |