Subsections

2 マクロ命令

2.1 入出力関係

通常,入出力関係を伴ったしょりにはキーボードやディスプレイのハードウェアーの制御 が必要である.COMET IIでそれらを制御するとなると,非常にプログラムが難しくなる 2.そこで,CASL IIにはマクロという形でそれを実現している.マクロも 機械語命令の集まりであるが,プログラマーはそんなことを気にしないで,通常の命令と 同じように使うことができる.

2.1.1 入力命令(IN)

CASL IIでは,データの入力方法は2通りある.以前学習したDCとここで示すIN である.DCではデータはプログラム中に記述し,アセンブル時にビットに変換され, 実行時にメモリーにロードされる.それに対して,INは実行時にキーボードから入 力されたデータをメモリーに格納する.

2.1.1.1 内容

命令語 IN
語源 INput (return:入力)
役割 入力装置(通常はキーボード)から文字列を読み込む.
書式 [ラベル] IN ラベル1,ラベル2
機能 入力装置から1レコード(256語)分のデータが,ラベル1で指定さ れた入力領域に入力される.読み込まれた文字数はラベル2の領域にセットされる.ファ イルの終わりを検出した場合(データがない場合),ラベル2には-1がセットされる.
フラグレジスタ アセンブラーに依存.

2.1.1.2 使用例

       IN    TEXT,NUM         ;キーボードからデータを読み込む
この命令では,必ず読み込んだデータと文字数を格納する主記憶の領域を確保しなくては ならない.すなわち,以下が必要である.
	TEXT   DS    256         ;データ領域,1レコード予約する
	NUM    DS    1           ;読み込み文字数を入れる
データ領域として,1ワード以外の値を指定した場合,エラーになるか否かはアセンブラー に依存するであろう.シミュレーター WCASL-IIではエラーにならなかった.

2.1.2 出力命令(OUT)

2.1.2.1 内容

命令語 OUT
語源 OUTput (return:入力)
役割 出力装置(通常はディスプレイ)に文字列を書き出す.
書式 [ラベル] OUT ラベル1,ラベル2
機能 データをラベル2で指定された文字数出力装置に書き出す.
フラグレジスタ アセンブラーに依存.

2.1.2.2 使用例

       OUT    TEXT,NUM         ;ディスプレイに文字を書き出す
この命令では,メモリーに格納されているデータは文字として取り扱われる.数値を表示 させるときには工夫が必要である.それについては,以降の学習範囲である.

2.2 レジスター関係

レジスターのデータの待避と復元には,機械語命令のPUSHPOPを使うことが できる.これは,レジスターひとつずつを処理するため,頻繁に多くのレジスターを取り 扱う場合,プログラムが長くなり不便である.そこで,汎用レジスターのGR1GR7まで,一度の待避と復元ができるマクロ命令が用意されている.

2.2.1 レジスターの待避(RPUSH)

2.2.1.1 内容

命令語 RPUSH
語源 ???
役割 GR1GR2, GR3, $ \cdots$ , GR7の順でス タック領域にデータをプッシュする.
書式 [ラベル] RPUSH
機能 スタックポインター(SP)の値を減らしながら,汎用レジス ターの値をプッシュする.
フラグレジスタ アセンブラーに依存.

2.2.1.2 使用例

       RPUSH              ;レジスターのデータの待避

2.2.2 レジスターの復元(RPOP)

2.2.2.1 内容

命令語 RPOP
語源 ???
役割 スタック領域のデータをポップし,GR7GR6, GR5, $ \cdots$ , GR1の順でレジスターに入れる.
書式 [ラベル] RPUSH
機能 スタックポインター(SP)の値を増やしながら,汎用レジス ターの値をポップする.
フラグレジスタ アセンブラーに依存.

2.2.2.2 使用例

       RPOP              ;レジスターのデータの復元

ホームページ: Yamamoto's laboratory
著者: 山本昌志
Yamamoto Masashi
2006-02-08


no counter