X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=doc%2Fcasl2_spec%2Fcasl2_spec.texi;h=2bde49e4d47caf1b735b49d9bc357c3d6bf9790e;hp=5a145e9326352f59e59d5bd7f58dfffcf43dff1c;hb=bce17a4fab0759bd0818c44bdf3cd17edb388267;hpb=2d96957ed5d6e49e8868f21db5333a03564d5fd0 diff --git a/doc/casl2_spec/casl2_spec.texi b/doc/casl2_spec/casl2_spec.texi index 5a145e9..2bde49e 100644 --- a/doc/casl2_spec/casl2_spec.texi +++ b/doc/casl2_spec/casl2_spec.texi @@ -271,7 +271,7 @@ CASL IIは,COMET IIのためのアセンブラ言語である。 @code{IN}命令は,あらかじめ割り当てた入力装置から,1レコードの文字データを読み込む。 -入力領域は,256語長の作業域のラベルであり,この領域の先頭から,1文字を1語に対応させて順次入力される。レコードの区切り符号(キーボ-ド入力の復帰符号など)は,格納しない。格納の形式は,DC命令の文字定数と同じである。入力データが256文字に満たない場合, 入力領域の残りの部分は実行前のデータを保持する。入力データが256文字を超える場合, 以降の文字は無視される。 +入力領域は,256語長の作業域のラベルであり,この領域の先頭から,1文字を1語に対応させて順次入力される。レコードの区切り符号(キーボ-ド入力の復帰符号など)は,格納しない。格納の形式は,@code{DC}命令の文字定数と同じである。入力データが256文字に満たない場合, 入力領域の残りの部分は実行前のデータを保持する。入力データが256文字を超える場合, 以降の文字は無視される。 入力文字長領域は,1語長の領域のラベルであり,入力された文字の長さ(@geq{} 0)が2進数で格納される。ファイルの終わり(end of file)を検出した場合は,-1が格納される。 @@ -293,7 +293,7 @@ CASL IIは,COMET IIのためのアセンブラ言語である。 @item @* @image{img/2_4-04,5cm,,,.svg} @* -@code{RPOP}命令は,スタックの内容を順次取り出し,@code{GR7},@code{GR6},…,@code{GR1}の順で@code{GR}に格納する。` +@code{RPOP}命令は,スタックの内容を順次取り出し,@code{GR7},@code{GR6},…,@code{GR1}の順で@code{GR}に格納する。 @end enumerate @section 機械語命令 @@ -413,15 +413,15 @@ COUNT1 START ; ; 処理 ; GR1 中の'1'のビットの個数を求める ; 出力 ; GR0:GR1 中の'1'のビットの個数 PUSH 0,GR1 ; - PUSH 0,GR2 ; Count = 0 - SUBA GR2,GR2 ; 全部のビットが'0'? - AND GR1,GR1 ; 全部のビットが'0'なら終了 - JZE RETURN ; Count = Count + 1 -MORE LAD GR2,1,GR2 ; 最下位の'1'のビット 1 個を - LAD GR0,-1,GR1 ; '0'に変える - AND GR1,GR0 ; '1'のビットが残っていれば繰返し - JNZ MORE ; GR0 = Count -RETURN LD GR0,GR2 ; + PUSH 0,GR2 ; + SUBA GR2,GR2 ; Count = 0 + AND GR1,GR1 ; 全部のビットが'0'? + JZE RETURN ; 全部のビットが'0'なら終了 +MORE LAD GR2,1,GR2 ; Count = Count + 1 + LAD GR0,-1,GR1 ; 最下位の'1'のビット 1 個を + AND GR1,GR0 ; '0'に変える + JNZ MORE ; '1'のビットが残っていれば繰返し +RETURN LD GR0,GR2 ; GR0 = Count POP GR2 ; POP GR1 ; RET ; 呼出しプログラムへ戻る