Subsections
通常,入出力関係を伴ったしょりにはキーボードやディスプレイのハードウェアーの制御
が必要である.COMET IIでそれらを制御するとなると,非常にプログラムが難しくなる
2.そこで,CASL IIにはマクロという形でそれを実現している.マクロも
機械語命令の集まりであるが,プログラマーはそんなことを気にしないで,通常の命令と
同じように使うことができる.
CASL IIでは,データの入力方法は2通りある.以前学習した
DCとここで示す
IN
である.
DCではデータはプログラム中に記述し,アセンブル時にビットに変換され,
実行時にメモリーにロードされる.それに対して,
INは実行時にキーボードから入
力されたデータをメモリーに格納する.
命令語 |
IN |
語源 |
INput (return:入力) |
役割 |
入力装置(通常はキーボード)から文字列を読み込む. |
書式 |
[ラベル] IN ラベル1,ラベル2 |
機能 |
入力装置から1レコード(256語)分のデータが,ラベル1で指定さ
れた入力領域に入力される.読み込まれた文字数はラベル2の領域にセットされる.ファ
イルの終わりを検出した場合(データがない場合),ラベル2には-1がセットされる. |
フラグレジスタ |
アセンブラーに依存. |
IN TEXT,NUM ;キーボードからデータを読み込む
この命令では,必ず読み込んだデータと文字数を格納する主記憶の領域を確保しなくては
ならない.すなわち,以下が必要である.
TEXT DS 256 ;データ領域,1レコード予約する
NUM DS 1 ;読み込み文字数を入れる
データ領域として,1ワード以外の値を指定した場合,エラーになるか否かはアセンブラー
に依存するであろう.シミュレーター WCASL-IIではエラーにならなかった.
命令語 |
OUT |
語源 |
OUTput (return:入力) |
役割 |
出力装置(通常はディスプレイ)に文字列を書き出す. |
書式 |
[ラベル] OUT ラベル1,ラベル2 |
機能 |
データをラベル2で指定された文字数出力装置に書き出す. |
フラグレジスタ |
アセンブラーに依存. |
OUT TEXT,NUM ;ディスプレイに文字を書き出す
この命令では,メモリーに格納されているデータは文字として取り扱われる.数値を表示
させるときには工夫が必要である.それについては,以降の学習範囲である.
レジスターのデータの待避と復元には,機械語命令の
PUSHと
POPを使うことが
できる.これは,レジスターひとつずつを処理するため,頻繁に多くのレジスターを取り
扱う場合,プログラムが長くなり不便である.そこで,汎用レジスターの
GR1〜
GR7まで,一度の待避と復元ができるマクロ命令が用意されている.
命令語 |
RPUSH |
語源 |
??? |
役割 |
GR1,GR2, GR3,
, GR7の順でス
タック領域にデータをプッシュする. |
書式 |
[ラベル] RPUSH |
機能 |
スタックポインター(SP)の値を減らしながら,汎用レジス
ターの値をプッシュする. |
フラグレジスタ |
アセンブラーに依存. |
RPUSH ;レジスターのデータの待避
命令語 |
RPOP |
語源 |
??? |
役割 |
スタック領域のデータをポップし,GR7,GR6,
GR5,
, GR1の順でレジスターに入れる. |
書式 |
[ラベル] RPUSH |
機能 |
スタックポインター(SP)の値を増やしながら,汎用レジス
ターの値をポップする. |
フラグレジスタ |
アセンブラーに依存. |
RPOP ;レジスターのデータの復元
ホームページ:
Yamamoto's laboratory著者:
山本昌志
Yamamoto Masashi
2006-02-08