1 \input texinfo @c -*-texinfo-*-
4 @documentlanguage ja_JP
6 @setfilename yacasl2.info
7 @documentencoding UTF-8
8 @settitle YACASL2 - Linux上のCASL II処理系
9 @firstparagraphindent none
14 Copyright @copyright{} 2010 j8takagi
26 @subtitle Linux上のCASL II処理系
45 @node YACASL2の概要, YACASL2のインストール, Top, Top
48 YACASL2は、Linux上で動作するオープンソースのCASL II処理系です。CASL IIは情報処理試験で用いられるアセンブラ言語で、次の資料により仕様が公開されています。
54 @uref{http://www.jitec.ipa.go.jp/1_00topic/topic_20081027_hani_yougo.pdf, 試験で使用する情報処理用語・プログラム言語など(2008年10月版)}[PDFファイル]
61 YACASL2は、CASL IIアセンブラ言語で記述されたファイルをアセンブルし、仮想マシンCOMET II上で実行します。アセンブルと実行は、連続で行うことも別々に行うことも可能です。
62 YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試験の問題をはじめ各種参考書やサイトに記載されたCASL IIのプログラムをそのままアセンブルして実行できます。また、本パッケージ中にCASL IIのサンプルプログラムが多数収録されています。
64 YACASL2は、「ふつうの処理系」として動作します。ほかの多くのCASL IIエミュレータと違い、デバッガとして動作したり、コンピュータ内部の模式図を表示したりすることはありません。そのかわり、YACASL2は、次のような動作内容をすべてテキストで出力します。
81 出力された動作内容は、GNU/Linuxのさまざまなツール、たとえば@command{cat}、@command{less}、@command{grep}、@command{wc}などを使って解析できます。
83 YACASL2の操作は、端末を開いてコマンドを入力・実行することで行います。
86 YACASL2は、Linux上で動作します。現在動作を確認しているのは、次のディストリビューションです。
91 Ubuntu Linux 9.04 / 8.04
97 インストール時に、@command{tar}、@command{gcc}、@command{make}が必要です。
99 @node YACASL2のインストール, YACASL2の使い方, YACASL2の概要, Top
100 @chapter YACASL2のインストール
101 YACASL2をインストールするには、Linux上で次の作業をします。
115 @command{casl2}、@command{comet2}、@command{dumpword}のビルド
118 @command{casl2}の実行テスト
127 @section YACASL2ファイルのダウンロード
128 @uref{http://github.com/j8takagi/YACASL2, GitHub/j8takagi/YACASL2}の@uref{http://github.com/j8takagi/YACASL2/downloads, ダウンロードページ}から最新版のtgzファイルをダウンロードします(2010年3月6日現在、@var{v0.1}の@file{j8takagi-YACASL2-6323ce4.tar.gz})。
130 続けて、対応する@file{md5sum}フィルをダウンロードします(2010年3月6日現在、@file{j8takagi-YACASL2-6323ce4.tar.gz.md5sum})。
132 @section YACASL2ファイルの検証
133 ダウンロードが完了したら、@command{md5sum}と@command{diff}で正しくファイルがダウンロードができているかを検証します。
139 $ @command{md5sum yacasl2.tar.gz | diff -s yacasl2.tar.gz.md5sum -}
140 Files yacasl2.tar.gz.md5sum and - are identical
146 @section YACASL2ファイルの展開
148 YACASL2ファイルをダウンロードしたら、次のコマンドで展開します。
154 $ @command{tar xvzf yacasl2.tar.gz}
160 @section @command{casl2}、@command{comet2}、@command{dumpword}のビルド
162 展開したら、次のコマンドで@command{casl2}、@command{comet2}、@command{dumpword}をビルドします。
168 $ @command{cd yacasl2}
171 make[1]: Entering directory ‘/home/kazubito/yacasl2/src’
172 gcc -c -g -Wall -I ../include casl2.c
173 gcc -c -g -Wall -I ../include word.c
174 gcc -c -g -Wall -I ../include hash.c
175 gcc -c -g -Wall -I ../include cerr.c
176 gcc -c -g -Wall -I ../include struct.c
177 gcc -c -g -Wall -I ../include cmd.c
178 gcc -c -g -Wall -I ../include assemble.c
179 gcc -c -g -Wall -I ../include token.c
180 gcc -c -g -Wall -I ../include label.c
181 gcc -c -g -Wall -I ../include macro.c
182 gcc -c -g -Wall -I ../include exec.c
183 gcc -c -g -Wall -I ../include dump.c
184 gcc -g -Wall -I ../include -o ../casl2 casl2.o word.o hash.o cerr.o st
185 ruct.o cmd.o assemble.o token.o label.o macro.o exec.o dump.o
186 gcc -c -g -Wall -I ../include comet2.c
187 gcc -g -Wall -I ../include -o ../comet2 comet2.o word.o hash.o cerr.o
188 struct.o cmd.o exec.o dump.o
189 gcc -c -g -Wall -I ../include dumpword.c
190 gcc -g -Wall -I ../include -o ../dumpword dumpword.o word.o cerr.o
191 make[1]: Leaving directory ‘/home/kazubito/yacasl2/src’
197 @section @command{casl2}の実行テスト
199 ビルドしたら、次のコマンドが正常に実行できるかを確認します。
200 正常に実行された場合は、「Hello, World!」と表示されます。
206 $ @command{./casl2 as/hello.casl}
215 次のコマンドを実行すると、正常にビルドできているかどうかを詳細にテストできます。
221 $ @command{make check}
222 194 / 194 tests passed. Details in /home/kazubito/yacasl2/test/integra
224 All tests are succeded.
225 149 / 149 tests passed. Details in /home/kazubito/yacasl2/test/integra
227 All tests are succeded.
228 4 / 4 tests passed. Details in /home/kazubito/yacasl2/test/integration
230 All tests are succeded.
236 @section 環境変数@var{PATH}の設定
238 環境変数@var{PATH}にYACASL2のディレクトリを追加すると、どのディレクトリでも@command{casl2}、@command{comet2}、@command{dumpword}を実行できます。
240 環境変数の設定方法は使っているシェルによって異なります。シェルは、次のコマンドで確認できます。
246 $ @command{echo $SHELL}
253 現在もっとも多く使われているシェルは、BASHでしょう。BASHでは、次のコマンドを実行すると環境変数@var{PATH}にYACASL2のディレクトリが追加されます。
259 $ @command{PATH=$PATH:~/yacasl2 && export PATH}
265 シェルの初期設定ファイルに上記のコマンドを追加すれば、今後ログインした後は自動的にどのディレクトリでも @command{casl2}、@command{comet2}、@command{dumpword}を実行できます。BASHではホームディレクトリにある@file{.bashrc}が初期設定ファイルのため、次のコマンドで追加されます。
271 $ @command{echo ’PATH=$PATH:~/yacasl2 && export PATH’ >>~/.bashrc}
277 @node YACASL2の使い方, YACASL2コマンドマニュアル, YACASL2のインストール, Top
278 @chapter YACASL2 の使い方
279 YACASL2 は、テキストファイルに記述されたCASLプログラムを処理します。以下の例で用いられるCASLプログラムのファイルは、テキストエディタなどで作成してください。また、インストールしたディレクトリの中にある@file{as}ディレクトリからコピーして作成することもできます。
281 @section 実行結果の出力だけを表示
283 インストール時にコマンド実行の確認に使った@file{hello.casl}は、次のような内容です。CASL IIのマクロ命令OUTは、文字列を出力します。
289 $ @command{cat hello.casl}
293 OBUF DC ’Hello, World!’
301 次のコマンドを実行すると、CASL II のアセンブルと仮想マシン COMET II 上での実行が連続で行われ、文字列が出力されます。
307 $ @command{casl2 hello.casl}
314 @file{addl.casl}は、3と1の和を求めます。
320 $ @command{cat addl.casl}
334 このプログラムには出力命令がないため、オプションなしで実行した場合には結果が出力されません。
340 $ @command{casl2 addl.casl}
347 実行内容を確認するには、後述のようにCPU 内にあるレジスタやメモリの内容を表示するか、結果を出力するための処理を追加する必要があります。
349 @file{sum_10.casl}は、1から10までの整数の和を求めます。
355 $ @command{cat sum_10.casl}
357 ;;; 出力 GR0: 1から10までの整数をすべて加算した値
361 LD GR1,FST ; GR1に初項を転送
362 LOOP ADDL GR0,GR1 ; ループ先頭
363 ADDL GR1,STEP ; GR1 <- GR1 + 公差
364 CPL GR1,LST ; GR1が末項より大きい場合は終了
378 このプログラムも、オプションなしで実行した場合には結果が出力されません。
383 $ @command{casl2 sum_10.casl}
391 casl2の処理途中で行われるアセンブルの結果を表示するには、オプション@option{-a}を指定します。また、ラベルとアドレスの対応表を表示するには、オプション@option{-l}を指定します。
393 次のコマンドでは@file{hello.casl}の、ラベルとアドレスの対応表と、アセンブル結果と、実行結果が表示されます。OUTはアセンブラ命令で複数の機械語命令で構成されているため、命令行1行に対して、複数行のコードが生成されます。
399 $ @command{casl2 -a -l hello.casl}
401 Assemble hello.casl (0)
408 Assemble hello.casl (1)
409 hello.casl: 1:MAIN START
410 hello.casl: 2: OUT OBUF,LEN
433 hello.casl: 4:OBUF DC 'Hello, World!'
447 hello.casl: 5:LEN DC 13
456 @file{addl.casl}の、ラベルとアドレスの対応表と、アセンブル結果は、次のようになります。
462 $ @command{casl2 -a -l addl.casl}
464 Assemble addl.casl (0)
471 Assemble addl.casl (1)
472 addl.casl: 1:;;; ADDL r,adr
473 addl.casl: 2:MAIN START
474 addl.casl: 3: LD GR1,A
477 addl.casl: 4: ADDL GR1,B
492 なお、オプション@option{-A}を指定すると、アセンブル結果が表示される時点で処理が終了します。仮想マシンCOMET II での実行は行われません。
494 @section 実行時のレジスタとメモリを表示
495 YACASL2では実行中のCPUのレジスタとメモリの内容をそれぞれ、@option{-t}と@option{-d}を指定することで表示できます。
497 また、@option{-M}で、仮想マシンCOMET II のメモリ容量を語(16 ビット)単位で指定できます。小さいプログラムを実行するときは、メモリ容量を小さくすれば結果が見やすくなります。
499 @file{addl.casl}に必要なメモリ容量は8語のため、次のようにCPUのレジスタとメモリの内容を表示できます。
505 $ @command{casl2 -t -d -M8 addl.casl | less}
507 Assemble addl.casl (0)
509 Assemble addl.casl (1)
511 Executing machine codes
513 #0000: GR0: 0 = #0000 = 0000000000000000
514 #0000: GR1: 0 = #0000 = 0000000000000000
515 #0000: GR2: 0 = #0000 = 0000000000000000
516 #0000: GR3: 0 = #0000 = 0000000000000000
517 #0000: GR4: 0 = #0000 = 0000000000000000
518 #0000: GR5: 0 = #0000 = 0000000000000000
519 #0000: GR6: 0 = #0000 = 0000000000000000
520 #0000: GR7: 0 = #0000 = 0000000000000000
521 #0000: SP: 8 = #0008 = 0000000000001000
522 #0000: PR: 0 = #0000 = 0000000000000000
523 #0000: FR (OF SF ZF): 000
525 #0000: adr : 0000 0001 0002 0003 0004 0005 0006 0007
526 #0000: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
528 #0002: GR0: 0 = #0000 = 0000000000000000
529 #0002: GR1: 3 = #0003 = 0000000000000011
530 #0002: GR2: 0 = #0000 = 0000000000000000
531 #0002: GR3: 0 = #0000 = 0000000000000000
532 #0002: GR4: 0 = #0000 = 0000000000000000
533 #0002: GR5: 0 = #0000 = 0000000000000000
534 #0002: GR6: 0 = #0000 = 0000000000000000
535 #0002: GR7: 0 = #0000 = 0000000000000000
536 #0002: SP: 8 = #0008 = 0000000000001000
537 #0002: PR: 2 = #0002 = 0000000000000010
538 #0002: FR (OF SF ZF): 000
540 #0002: adr : 0000 0001 0002 0003 0004 0005 0006 0007
541 #0002: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
543 #0004: GR0: 0 = #0000 = 0000000000000000
544 #0004: GR1: 4 = #0004 = 0000000000000100
545 #0004: GR2: 0 = #0000 = 0000000000000000
546 #0004: GR3: 0 = #0000 = 0000000000000000
547 #0004: GR4: 0 = #0000 = 0000000000000000
548 #0004: GR5: 0 = #0000 = 0000000000000000
549 #0004: GR6: 0 = #0000 = 0000000000000000
550 #0004: GR7: 0 = #0000 = 0000000000000000
551 #0004: SP: 8 = #0008 = 0000000000001000
552 #0004: PR: 4 = #0004 = 0000000000000100
553 #0004: FR (OF SF ZF): 000
555 #0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007
556 #0004: 0000: 1010 0005 2210 0006 8100 0003 0001 0000
562 @subsection 特定のレジスタを表示
564 @file{addl.casl}のレジスタやメモリの中で、実行中に値が変化しているのはGR1だけです。こうした場合は、@command{grep}を使って表示される内容を絞り込むことで動作を検証しやすくなります。
570 $ @command{casl2 -t addl.casl | grep 'GR1:'}
571 #0000: GR1: 0 = #0000 = 0000000000000000
572 #0002: GR1: 3 = #0003 = 0000000000000011
573 #0004: GR1: 4 = #0004 = 0000000000000100
579 この内容を、先に出力したアセンブル結果と引き比べてください。
580 次の表のように、PRとGR1、命令行が対応していることがわかります。
582 @multitable @columnfractions .3 .3 .4
583 @item PR @tab GR1 @tab 命令行
591 @tab @code{ADDL GR1,B}
594 @subsection プログラム終了時の値を表示
596 @command{grep}と@command{tail}を組み合わせれば、プログラム終了時の値を表示できます。
602 $ @command{casl2 -t addl.casl | grep 'GR1:' | tail -1}
603 #0004: GR1: 4 = #0004 = 0000000000000100
613 $ @command{casl2 -t sum_10.casl | grep 'GR0:' | tail -1}
614 #0010: GR0: 55 = #0037 = 0000000000110111 = '7'
620 @subsection プログラムのステップ数を表示
622 @command{grep}と@command{wc}を組み合わせれば、プログラムのステップ数を表示できます。
628 $ @command{casl2 -t hello.casl | grep 'GR1:' | wc -l}
639 $ @command{casl2 -t addl.casl | grep 'GR1:' | wc -l}
646 @file{sum_10.casl}はプログラム内にループがあるため、ステップ数が大きくなります。
652 $ @command{casl2 -t sum_10.casl | grep 'GR0:' | wc -l}
659 @section アセンブルと実行を別に行う
661 @command{casl2}に@option{-O}@file{ファイル名}を指定すると、オブジェクトファイルを作成できます。
667 $ @command{casl2 -Ohello.o hello.casl}
673 作成されたオブジェクトファイルの内容は、@command{od}を使って確認できます。テキストファイルではないため、@command{cat}などでは確認できません。
679 $ @command{od -t x2 hello.o}
680 0000000 7001 0000 7002 0000 1210 0013 1220 0020
681 0000020 f000 0002 1210 0021 1220 0022 f000 0002
682 0000040 7120 7110 8100 0048 0065 006c 006c 006f
683 0000060 002c 0020 0057 006f 0072 006c 0064 0021
684 0000100 000d 000a 0001
691 オブジェクトファイルの実行には、@command{comet2}を使います。
697 $ @command{comet2 hello.o}
706 CASL IIでは、1語(16ビット)を単位としてデータが処理されます。
707 @command{dumpword}は、指定した1語を10進数、16進数、2進数で表示します。
713 $ @command{dumpword 72}
714 72: 72 = #0048 = 0000000001001000 = 'H'
726 $ @command{dumpword -- -72}
727 -72: -72 = #FFB8 = 1111111110111000
739 $ @command{dumpword '#0048'}
740 #0048: 72 = #0048 = 0000000001001000 = 'H'
746 @section CASL2ライブラリの使用
748 YACASL2の@file{as/casl2lib}ディレクトリには、CASL IIで記述されたライブラリファイルが格納されています。
750 このフォルダには、たとえば次のようなプログラムが含まれています。
754 @file{outl.casl}。GR1に格納された値を、0〜65535の数値として出力します。
757 @file{outa.casl}。GR1に格納された値を、-32767〜32767の数値として出力します。
760 @file{mull.casl}。GR1とGR2に格納された値を0〜65535の整数と見なし、積をGR3に格納します。
763 @file{divl.casl}。GR1とGR2に格納された値を0〜65535の整数と見なし、商をGR3、剰余をGR0に格納します。
768 3と1の和を求める@file{addl.casl}で演算結果を出力するには、まず@file{addl.casl}を編集します。CASL IIの@command{CALL}命令で@command{OUTL}を副プログラムとして呼び出すようにします。
774 $ @command{cat addl_outl.casl}
788 変更したら@command{casl2}を、複数のファイルを指定して実行します。
794 $ @command{casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl}
801 @node YACASL2コマンドマニュアル,CASL2LIBマニュアル,YACASL2の使い方,TOP
802 @chapter YACASL2コマンドマニュアル
804 @cindex YACASL2コマンドマニュアル
806 YACASL2のコマンドとオプションについて解説します。
815 @section @command{casl2}
820 @command{casl2}は、引数として指定されたCASLファイルをアセンブルし、仮想マシンCOMET II上で実行します。CASLファイルは、アセンブラ言語CASL IIで記述されたテキストファイルです。引数が指定されない場合は、エラーメッセージを表示して終了します。
823 $ @command{casl2 hello.casl}
826 副プログラムを呼び出す場合は、複数のCASLファイルを指定することもできます。
829 $ @command{casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl}
832 @unnumberedsubsec オプション
834 @command{casl2}は、次のオプションを指定できます。
843 ラベルの一覧を表示し、ほかの作業を続行します。
850 @itemx --assembledetail
851 アセンブル詳細結果を表示し、ほかの作業を続行します。
859 アセンブル結果をオブジェクトファイル@file{<OBJECTFILE>}に出力し、ほかの作業を続行します。出力されたオブジェクトファイルは、@command{comet2}で実行できます。オブジェクトファイルを指定しない場合、出力先は@file{a.o}です。オブジェクトファイルは1つだけ指定できます。
862 @itemx --assembleoutonly
863 アセンブル結果をオブジェクトファイル@file{<OBJECTFILE>}に出力し、終了します。出力されたオブジェクトファイルは、@command{comet2}で実行できます。オブジェクトファイルを指定しない場合、出力先は@file{a.o}です。オブジェクトファイルは1つだけ指定できます。
867 @itemx --tracearithmetic
868 実行時のレジスタをトレースします。レジスタには、GR0〜GR7という8個の汎用レジスタと、SP(スタックポインタ)、PR(プログラムレジスタ)、FR(フラグレジスタ)があります。レジストリの内容は、-32,768〜32,767の範囲の整数、#0000〜#FFFFの範囲の16進数、2進数で表示されます。文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。-32768〜32767の範囲の整数を表示するので、算術演算の結果を確認する場合に使えます。
871 @itemx --tracelogical
872 @option{-t}と同じく、実行時のレジスタをトレースします。@option{-t}と異なり0〜65,535の範囲の整数を表示するので、論理演算の結果を確認する場合に使えます。
878 @item -M <MEMORYSIZE>
879 @itemx --memorysize <MEMORYSIZE>
880 アセンブルおよび実行時のメモリサイズ@option{<MEMORYSIZE>}を0〜65,535の範囲で指定します。指定しない場合、メモリサイズは512です。
883 @itemx --clocks <CLOCKS>
884 実行時のクロック周波数@option{<CLOCKS>}を0より大きい整数で指定します。指定しない場合、クロック周波数は5000000です。
888 @command{casl2}の使用方法を表示して終了します。
892 @section @command{comet2}
897 @command{comet2}は、引数として指定されたオブジェクトファイルを仮想マシンCOMET II上で実行します。オブジェクトファイルは、@command{casl}に@option{-o}または@option{-O}を指定して出力します。
900 $ @command{comet2 hello.o}
903 引数で指定できるオブジェクトファイルは1つだけです。引数が指定されない場合は、エラーメッセージを表示して終了します。複数の引数を指定した場合、2番目以降の引数は無視されます。
905 @unnumberedsubsec オプション
907 @command{comet2}は、次のオプションを指定できます。
913 @itemx --tracearithmetic
914 実行時のレジスタをトレースします。レジスタには、GR0〜GR7という8個の汎用レジスタと、SP(スタックポインタ)、PR(プログラムレジスタ)、FR(フラグレジスタ)があります。レジストリの内容は、-32,768〜32,767の範囲の整数、#0000〜#FFFFの範囲の16進数、2進数で表示されます。文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。-32768〜32767の範囲の整数が表示されるので、算術演算の結果を確認する場合に使えます。
917 @itemx --tracelogical
918 @option{-t}と同じく、実行時のレジスタをトレースします。@option{-t}と異なり0〜65,535の範囲の整数を表示するので、論理演算の結果を確認する場合に使えます。
924 @item -M <MEMORYSIZE>
925 @itemx --memorysize <MEMORYSIZE>
926 実行時のメモリサイズ@option{<MEMORYSIZE>}を0〜65,535の範囲で指定します。指定しない場合、メモリサイズは512です。
929 @itemx --clocks <CLOCKS>
930 実行時のクロック周波数@option{<CLOCKS>}を0より大きい整数で指定します。指定しない場合、クロック周波数は5,000,000です。
934 @command{comet2}の使用方法を表示して終了します。
938 @section @command{dumpword}
943 @command{dumpword}は、引数として指定された数値を、整数、#0000〜#FFFFの範囲の16進数、2進数で表示します。文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。引数は、10進数または先頭に「#」の付いた16進数で指定します。表示される整数は、オプションにより-32,768〜32,767または0〜65,535の範囲です。オプションなしの場合は、-32,768〜32,767です。
946 $ @command{dumpword 10}
949 引数で指定できる1つだけです。引数が指定されない場合は、使い方を表示して終了します。複数の引数を指定した場合、2番目以降の引数は無視されます。
951 @unnumberedsubsec オプション
953 @command{dumpword}は、次のオプションを指定できます。
959 出力される整数の範囲を-32,768〜32,767にします。オプションなしの場合と同じです。
963 出力される整数の範囲を0〜65,535にします。
967 @command{dumpword}の使用方法を表示して終了します。
970 @node CASL2LIBマニュアル,,YACASL2コマンドマニュアル,TOP
971 @chapter CASL2LIBマニュアル
993 @section @command{ABS} - @file{abs.casl}
1003 @unnumberedsubsec 出力
1010 入力されたGR1が-32768の場合、1
1013 入力されたGR1が負数(-32767〜-1)の場合、1
1016 @unnumberedsubsec 依存する副プログラム
1019 @unnumberedsubsec 使用例
1024 @verbatiminclude ../as/casl2lib/test/abs/abs.casl
1034 @verbatiminclude ../as/casl2lib/test/abs/0.txt
1041 @section @command{ADDL32} - @file{addl32.casl}
1042 32ビットの値を、連続する2語の領域に格納
1044 @unnumberedsubsec 入力
1053 @unnumberedsubsec 出力
1059 上位アドレスでオーバーフローした場合、1
1062 和が負数(-32767〜-1)の場合、1
1068 @unnumberedsubsec 使用例
1073 @verbatiminclude ../as/casl2lib/test/addl32/addl32_1.casl
1090 @unnumberedsubsec 依存する副プログラム
1094 @section @command{DIVA} -@file{diva.casl}
1095 -32,767〜32,767の範囲にある整数の割算(筆算方式)を行う
1097 @unnumberedsubsec 入力
1106 @unnumberedsubsec 出力
1118 商が負数(-32767〜-1)の場合、1
1124 @unnumberedsubsec 依存する副プログラム
1126 @item @command{DIVL}
1129 @c @unnumberedsubsec 使用例
1134 @c @verbatiminclude ../as/casl2lib/test/diva/diva.casl
1144 @c @verbatiminclude ../as/casl2lib/test/diva/0.txt
1151 @section @command{DIVL} - @file{divl.casl}
1152 0〜65,535の範囲にある整数の割算(筆算方式)を行う
1154 @unnumberedsubsec 入力
1163 @unnumberedsubsec 出力
1181 @unnumberedsubsec 依存する副プログラム
1184 @unnumberedsubsec 使用例
1189 @verbatiminclude ../as/casl2lib/test/divl/divl0/divl0.casl
1196 @section @command{INL} - @file{inl.casl}
1199 @section @command{L2STR} - @file{l2str.casl}
1202 @section @command{MAX} - @file{max.casl}
1205 @section @command{MINIM} - @file{minim.casl}
1208 @section @command{MULA} - @file{mula.casl}
1211 @section @command{MULL} - @file{mull.casl}
1214 @section @command{OUTA} - @file{outa.casl}
1217 @section @command{OUTB} - @file{outb.casl}
1220 @section @command{OUTD_Q15} - @file{outd_q15.casl}
1223 @section @command{OUTL} - @file{outl.casl}
1226 @section @command{REV} - @file{rev.casl}
1229 @section @command{STR2L} - @file{str2l.casl}