Subsections
コーディングとはプログラムを記述する作業のことである.ここでは,CASL IIのプログ
ラムの書き方の約束を示す.
CASL IIのプログラムの1行は,ラベル欄と命令コード欄,オペランド欄,注釈欄と機能毎
に欄が分かれている.具体的には,図1のようにである.
各欄はFORTRANのように桁数で分けられているわけではない.機能別の欄の区切りは,1
個以上の空白である.したがって,
- ラベル欄の先頭の空白は許されない.空白があると,それはラベル
ではなく命令コードと解釈される.
- 各行の命令コード欄やオペランド欄,注釈欄の書き始めをそろえる必
要はない.しかし,各欄の書き始めの位置はそろえたほうが,プ
ログラムは分かりやすくなる.できるだけ,そろえたほうが良い.
となる.
ラベルは,その記述する位置からFORTRANの文番号にも似ている.あるいは,いままでの
例でもわかるように,変数名の役割を果たしている.実際,プログラムでは,FORTRANの
文番号や変数名のような使われ方をする.実際には,CASL IIでは,それはアドレスを表
す.そのアドレスは,それ引き続く命令に従い,次のように決まっている.
- 機械語命令のラベルの場合は,その機械語命令が格納されている2語分の領域のう
ち,その先頭アドレスを表す.実際のプログラムでは,ジャンプ命令とともに使わ
れ,そのアドレスに制御が移る.FORTRANのGO TO 文でその文番号に制御が移
るのと同じである.
- DC命令 の場合,ラベルは定数が格納されている領域 の先頭アドレスを示す.
使い方はFORTRANの変数名に似ているが,実態はアドレスである.
- DS命令の場合,ラベルはこの命令によって確保されている主記憶の領
域の先頭アドレスを表す.C言語の配列の宣言と同じである.
- INやOUTのマグロ命令の場合は,ラベルは複数の命令群のうちの先頭の
命令が格納されているアドレスを示す.
ラベルがアドレスを表すことが理解できれば,簡単である.常識通りに解釈
すればよいのである.
教科書にも書かれている通り,ラベルの記述の約束は
- プログラムのロジックでラベルが不要な場合は,記述しなくても良い.
- ラベルは,8文字以内で記述する.先頭はアルファベットの大文字,2
文字以降はアルファベットの大文字,数字いずれでも良い.
- 必ず先頭(第1文字)から始める.第1文字が空白の場合は,ラベル名
は無いものみなされ,命令コードと解釈される.
- 汎用レジスタの名前のGR0からGR7は予約語であり,ラベル名として使
用できない.命令コードのオペランドで,ラベルなのかレジスタなの
か区別できなくなるためである.
である.
重要なポイント
以前学習した通りアセンブラのプログラムは,主記憶装置(メインメモリー)
の中に格納されているデータを処理(いろいろな演算)する.また,プログラムの命令も主
記憶装置に格納されている.主記憶装置に格納されているデータや命令にアクセスする場
合,主記憶装置のアドレスを指定することになる.したがって,アセンブラでは,アドレ
スが重要になり,プログラマーは意識しなくてはならない.
高級言語の場合,アドレスに関してはコンパイラーが勝手に処理をする.
ありがたいものである.例えば,FORTRANで変数を使った場合,プログラマーがその変数
のアドレスに注意を払う必要はない.これは,コンパイラーが変数名とアドレスの関係の
表を持っており,それに従い,上手にマシン語に変換してくれているのである.
アセンブラのでは,コンパイラーの代わりにプログラマーが変数とアドレ
スの関係を考えなくてはならない.そんなに難しくない.
この欄には,アセンブラ命令(非実行文),機械語命令,マクロ命令を書く.
教科書にも書かれている通り,記述の約束は以下の通りである.
- ラベルの後に1個以上の空白の後,命令コードを書く.
- ラベルが無い場合は,命令コードの前に1個以上の空白の後,記述する.
この欄には,命令のオペランドを記述する.オペランド(operand:被演算子)
とは,命令の対象となるアドレスやレジスタ,データのことである.CASL II
では汎用レジスタ番号,記号番地(ラベルのこと),あるいは絶対番地,文字,
整数がオペランドとなる.その記述方法は,教科書に書かれているように,以
下の通りである.
- 命令コードの後に1個以上の空白の後,オペランドを書く.
- 複数のオペランドは,カンマ","で区切って,連続して書く.途中に空白は
入れない.
行中にセミコロン
";"を書くことのより,それから行末まで注釈(コメン
ト)として扱うことができる.FORTRANの注釈文と同じで,プログラムの実行に
何ら影響を与えない.プログラムの内容を分かりやすくするために書くことが
多い.あるいは,その行を実行させないときに行頭にセミコロンを
";"を
追加してデバック作業を進めることがある.
- 行の先頭,あるいはセミコロンの前に空白しかない場合は,行全体が
注釈となる.
- オペランドの後に1個以上の空白があれば,そこ以降も注釈となる.
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
2006-02-08