YACASL2 - CASL II 処理システム

Next: , Previous: , Up: (dir)   [Contents]

Top

Table of Contents


Next: , Previous: , Up: Top   [Contents]

1 YACASL2の概要

YACASL2は、UNIXやLinuxのコマンドラインインターフェイスで 動作するオープンソースのCASL II処理システムです。 CASL IIは情報処理試験で用いられるアセンブラ言語で、 次の資料により仕様が公開されています。

試験で使用する情報処理用語・プログラム言語など Ver 2.2(平成24年5月22日)[PDFファイル] 別紙 1 アセンブラ言語の仕様

YACASL2は、CASL IIアセンブラ言語で記述されたファイルをアセンブルし、 仮想マシンCOMET II上で実行します。 アセンブルと実行は、連続で行うこともできますし、 アセンブル結果をファイルに保存してあとから実行することもできます。 YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試験の問題を はじめ各種参考書やサイトに記載されたCASL IIのプログラムを そのままアセンブルして実行できます。 また、本パッケージ中にCASL IIのサンプルプログラムが多数収録されています。

YACASL2は、「ふつうの処理系」として動作します。 ほかの多くのCASL IIエミュレータと違い、デバッガとして動作したり、 コンピュータ内部の模式図を表示したりすることはありません。 そのかわり、YACASL2は、次のような動作内容をすべてテキストで出力します。

出力された動作内容は、GNU/Linuxのさまざまなコマンド、 たとえば、catlessgrepwcなどを使って解析できます。

YACASL2の操作は、端末上のコマンドラインインターフェイスで行います。


Next: , Previous: , Up: Top   [Contents]

2 YACASL2の使用例

YACASL2 は、テキストファイルに記述されたCASLプログラムを処理します。 以下の例で用いられるCASLプログラムのファイルは、 テキストエディタなどで作成するか、インストールしたディレクトリの 中にあるasディレクトリからコピーしてください。


Next: , Previous: , Up: Sample usage   [Contents]

2.1 実行結果の出力だけを表示

インストール時にコマンド実行の確認に使ったhello.caslは、次のような内容です。 CASL IIのマクロ命令OUTは、文字列を出力します。

$ cat hello.casl
MAIN     START
         OUT     OBUF,LEN
         RET
OBUF     DC      'Hello, World!'
LEN      DC      13
         END

次のコマンドを実行すると、CASL II のアセンブルと仮想マシン COMET II 上での実行が連続で行われ、文字列が出力されます。

$ casl2 hello.casl
Hello, World!

addl.caslは、3と1の和を求めます。

$ cat addl.casl
;;; ADDL r,adr
MAIN     START
         LD      GR1,A
         ADDL    GR1,B
         RET
A        DC      3
B        DC      1
         END

このプログラムには出力命令がないため、オプションなしで実行した場合には結果が出力されません。

$ casl2 addl.casl
$

実行内容を確認するには、後述のようにCPU 内にあるレジスタやメモリの内容を表示するか、結果を出力するための処理を追加する必要があります。


Next: , Previous: , Up: Sample usage   [Contents]

2.2 アセンブル結果の確認

casl2の処理途中で行われるアセンブルの結果を表示するには、オプション-aを指定します。 また、ラベルとアドレスの対応表を表示するには、オプション-lを指定します。

次のコマンドではhello.caslの、ラベルとアドレスの対応表と、アセンブル結果と、実行結果が表示されます。 OUTはアセンブラ命令で複数の機械語命令で構成されているため、命令行1行に対して、複数行のコードが生成されます。

$ casl2 -a -l hello.casl

Assemble hello.casl (0)

Label::::
MAIN.LEN ---> #0020
MAIN ---> #0000
MAIN.OBUF ---> #0013

Assemble hello.casl (1)
hello.casl:    1:MAIN    START
hello.casl:    2:        OUT     OBUF,LEN
    #0000   #7001
    #0001   #0000
    #0002   #7002
    #0003   #0000
    #0004   #1210
    #0005   #0013
    #0006   #1220
    #0007   #0020
    #0008   #F000
    #0009   #0002
    #000A   #1210
    #000B   #0021
    #0021   #000A
    #000C   #1220
    #000D   #0022
    #0022   #0001
    #000E   #F000
    #000F   #0002
    #0010   #7120
    #0011   #7110
hello.casl:    3:        RET
    #0012   #8100
hello.casl:    4:OBUF    DC      'Hello, World!'
    #0013   #0048
    #0014   #0065
    #0015   #006C
    #0016   #006C
    #0017   #006F
    #0018   #002C
    #0019   #0020
    #001A   #0057
    #001B   #006F
    #001C   #0072
    #001D   #006C
    #001E   #0064
    #001F   #0021
hello.casl:    5:LEN     DC      13
    #0020   #000D
hello.casl:    6:        END
Hello, World!

addl.caslの、ラベルとアドレスの対応表と、アセンブル結果は、次のようになります。

$ casl2 -a -l addl.casl

Assemble addl.casl (0)

Label::::
MAIN.A ---> #0005
MAIN.B ---> #0006
MAIN ---> #0000

Assemble addl.casl (1)
addl.casl:    1:;;; ADDL r,adr
addl.casl:    2:MAIN    START
addl.casl:    3:        LD      GR1,A
    #0000   #1010
    #0001   #0005
addl.casl:    4:        ADDL    GR1,B
    #0002   #2210
    #0003   #0006
addl.casl:    5:        RET
    #0004   #8100
addl.casl:    6:A       DC      3
    #0005   #0003
addl.casl:    7:B       DC      1
    #0006   #0001
addl.casl:    8:        END

なお、オプション-Aを指定すると、アセンブル結果が表示される時点で処理が終了します。 仮想マシンCOMET II での実行は行われません。


Next: , Previous: , Up: Sample usage   [Contents]

2.3 実行時のレジスタとメモリを表示

YACASL2では実行中のCPUのレジスタとメモリの内容をそれぞれ、-t-dを指定することで表示できます。

また、-Mで、仮想マシンCOMET II のメモリ容量を語(16 ビット)単位で指定できます。 小さいプログラムを実行するときは、メモリ容量を小さくすれば結果が見やすくなります。

addl.caslに必要なメモリ容量は8語のため、次のようにCPUのレジスタとメモリの内容を表示できます。

$ casl2 -t -d -M8 addl.casl | less

Assemble addl.casl (0)

Assemble addl.casl (1)

Executing machine codes
#0000: Register::::
#0000: GR0:      0 = #0000 = 0000000000000000
#0000: GR1:      0 = #0000 = 0000000000000000
#0000: GR2:      0 = #0000 = 0000000000000000
#0000: GR3:      0 = #0000 = 0000000000000000
#0000: GR4:      0 = #0000 = 0000000000000000
#0000: GR5:      0 = #0000 = 0000000000000000
#0000: GR6:      0 = #0000 = 0000000000000000
#0000: GR7:      0 = #0000 = 0000000000000000
#0000: SP:       8 = #0008 = 0000000000001000
#0000: PR:       0 = #0000 = 0000000000000000
#0000: FR (OF SF ZF): 000
#0000: Memory::::
#0000: adr : 0000 0001 0002 0003 0004 0005 0006 0007
#0000: 0000: 1010 0005 2210 0006 8100 0003 0001 0000 
#0002: Register::::
#0002: GR0:      0 = #0000 = 0000000000000000
#0002: GR1:      3 = #0003 = 0000000000000011
#0002: GR2:      0 = #0000 = 0000000000000000
#0002: GR3:      0 = #0000 = 0000000000000000
#0002: GR4:      0 = #0000 = 0000000000000000
#0002: GR5:      0 = #0000 = 0000000000000000
#0002: GR6:      0 = #0000 = 0000000000000000
#0002: GR7:      0 = #0000 = 0000000000000000
#0002: SP:       8 = #0008 = 0000000000001000
#0002: PR:       2 = #0002 = 0000000000000010
#0002: FR (OF SF ZF): 000
#0002: Memory::::
#0002: adr : 0000 0001 0002 0003 0004 0005 0006 0007
#0002: 0000: 1010 0005 2210 0006 8100 0003 0001 0000 
#0004: Register::::
#0004: GR0:      0 = #0000 = 0000000000000000
#0004: GR1:      4 = #0004 = 0000000000000100
#0004: GR2:      0 = #0000 = 0000000000000000
#0004: GR3:      0 = #0000 = 0000000000000000
#0004: GR4:      0 = #0000 = 0000000000000000
#0004: GR5:      0 = #0000 = 0000000000000000
#0004: GR6:      0 = #0000 = 0000000000000000
#0004: GR7:      0 = #0000 = 0000000000000000
#0004: SP:       8 = #0008 = 0000000000001000
#0004: PR:       4 = #0004 = 0000000000000100
#0004: FR (OF SF ZF): 000
#0004: Memory::::
#0004: adr : 0000 0001 0002 0003 0004 0005 0006 0007
#0004: 0000: 1010 0005 2210 0006 8100 0003 0001 0000 

Next: , Previous: , Up: Register and memory   [Contents]

2.3.1 特定のレジスタを表示

addl.caslのレジスタやメモリの中で、実行中に値が変化しているのはGR1だけです。 こうした場合は、grepを使って表示される内容を絞り込むことで動作を検証しやすくなります。

$ casl2 -t addl.casl | grep 'GR1:'
#0000: GR1:      0 = #0000 = 0000000000000000
#0002: GR1:      3 = #0003 = 0000000000000011
#0004: GR1:      4 = #0004 = 0000000000000100

この内容を、先に出力したアセンブル結果と引き比べてください。 次の表のように、PRとGR1、命令行が対応していることがわかります。

PRGR1命令行
#0000#0000
#0002#0003LD GR1,A
#0004#0004ADDL GR1,B

Next: , Previous: , Up: Register and memory   [Contents]

2.3.2 プログラム終了時の値を表示

greptailを組み合わせれば、プログラム終了時の値を表示できます。

addl.caslでプログラム終了時の値を確認するには、次のようにします。

$ casl2 -t addl.casl | grep 'GR1:' | tail -1
#0004: GR1:      4 = #0004 = 0000000000000100

sum_10.caslは、1から10までの整数の和を求めます。

$ cat sum_10.casl
;;; sum_10.casl
;;; 出力 GR0: 1から10までの整数をすべて加算した値
MAIN    START
        PUSH    0,GR1
        LAD     GR0,0           ; GR0を初期化
        LD      GR1,FST         ; GR1に初項を転送
LOOP    ADDL    GR0,GR1         ; ループ先頭
        ADDL    GR1,STEP        ; GR1 <- GR1 + 公差
        CPL     GR1,LST         ; GR1が末項より大きい場合は終了
        JPL     FIN             ; ↓
        JUMP    LOOP            ; ループ終端
FIN     POP     GR1
        RET
FST     DC      1               ; 初項
LST     DC      10              ; 末項
STEP    DC      1               ; 公差
        END

sum_10.caslでファイル終了時の値を確認するには、次のようにします。

$ casl2 -t sum_10.casl | grep 'GR0:' | tail -1
#0010: GR0:     55 = #0037 = 0000000000110111 = '7'

Previous: , Up: Register and memory   [Contents]

2.3.3 プログラムのステップ数を表示

grepwcを組み合わせれば、プログラムのステップ数を表示できます。

$ casl2 -t hello.casl | grep 'GR1:' | wc -l
11
$ casl2 -t addl.casl | grep 'GR1:' | wc -l
3

sum_10.caslはプログラム内にループがあるため、ステップ数が大きくなります。

$ casl2 -t sum_10.casl | grep 'GR0:' | wc -l
54

Next: , Previous: , Up: Sample usage   [Contents]

2.4 アセンブルと実行を別に行う

casl2-Oファイル名を指定すると、オブジェクトファイルを作成できます。

$ casl2 -Ohello.o hello.casl

作成されたオブジェクトファイルの内容は、odを使って確認できます。 テキストファイルではないため、catなどでは確認できません。

$ od -t x2 hello.o
0000000 7001 0000 7002 0000 1210 0013 1220 0020
0000020 f000 0002 1210 0021 1220 0022 f000 0002
0000040 7120 7110 8100 0048 0065 006c 006c 006f
0000060 002c 0020 0057 006f 0072 006c 0064 0021
0000100 000d 000a 0001
0000106

オブジェクトファイルの実行には、comet2を使います。

$ comet2 hello.o
Hello, World!

Next: , Previous: , Up: Sample usage   [Contents]

2.5 1語の解析

CASL IIでは、1語(1 word、16ビット)を単位としてデータが処理されます。 dumpwordは、指定した1語を10進数、16進数、2進数で表示します。

$ dumpword 72
    72:     72 = #0048 = 0000000001001000 = 'H'

Previous: , Up: Sample usage   [Contents]

2.6 CASL2ライブラリの使用

YACASL2のas/casl2libディレクトリには、CASL IIで記述されたライブラリファイルが格納されています。

このフォルダには、たとえば次のようなプログラムが含まれています。

OUTL

outl.casl。 GR1に格納された値を、0以上65535以下の整数として出力します。

OUTA

outa.casl。 GR1に格納された値を、-32767以上32767以下の整数として出力します。

MULL

mull.casl。 GR1とGR2に格納された値を0以上65535以下の整数と見なし、積をGR3に格納します。

DIVL

divl.casl。 GR1とGR2に格納された値を0以上65535以下の整数と見なし、商をGR3、剰余をGR0に格納します。

2.6.1 数値を出力する

3と1の和を求めるaddl.caslで演算結果を出力するには、まずaddl.caslを編集します。 CASL IIのCALL命令でOUTLを副プログラムとして呼び出します。

$ cat addl_outl.casl
MAIN    START
        LD      GR1,A
        ADDL    GR1,B
        CALL    OUTL
        RET
A       DC      3
B       DC      1
        END

変更したらcasl2を、複数のファイルを指定して実行します。

$ casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl
4

Next: , Previous: , Up: Top   [Contents]

3 casl2の呼び出し

casl2は、引数として指定されたCASLファイルをアセンブルし、仮想マシンCOMET II上で実行します。 CASLファイルは、アセンブラ言語CASL IIで記述されたテキストファイルです。 引数が指定されない場合は、エラーメッセージを表示して終了します。

$ casl2 hello.casl

複数のCASLファイルを指定することで、副プログラムを呼び出すこともできます。

$ casl2 addl_outl.casl ~/yacasl2/as/casl2lib/outl.casl

オプション

casl2は、次のオプションを指定できます。

-s
--source

CASLファイルの内容を表示します。

-l
--label

ラベルの一覧を次の形式で表示します。 表示後、ほかの作業を続行します。

<プログラム名>.<ラベル名> ---> <アドレスの16進数表現>
-L
--labelonly

-lと同じ形式でラベルの一覧を表示します。 表示後、ほかの作業は続行せず、終了します。

-a
--assembledetail

アセンブル詳細結果を表示し、ほかの作業を続行します。

-A
--assembledetailonly

アセンブル詳細結果を表示して終了します。

-o<OBJECTFILE>
--assembleout<OBJECTFILE>

アセンブル結果をオブジェクトファイル<OBJECTFILE>に出力し、ほかの作業を続行します。 出力されたオブジェクトファイルは、comet2で実行できます。 オブジェクトファイルを指定しない場合、出力先はa.oです。 オブジェクトファイルは1つだけ指定できます。

-O[<OBJECTFILE>]
--assembleoutonly[<OBJECTFILE>]

アセンブル結果をオブジェクトファイル<OBJECTFILE>に出力し、終了します。 出力されたオブジェクトファイルは、comet2で実行できます。 オブジェクトファイルを指定しない場合、出力先はa.oです。 オブジェクトファイルは1つだけ指定できます。

-t
--trace
--tracearithmetic

プログラム実行中のレジスタの値を次の形式で表示します。

<PR値の16進数表現>: <レジスタ>: <値の10進数表現> =
<値の16進数表現> = <値の2進数表現>[ ='文字']

表示されるレジスタには、次の種類があります。

GR0 GR1 GR2 GR3 GR4 GR5 GR6 GR7

汎用レジスタ

SP

スタックポインタ

PR

プログラムレジスタ

FR

フラグレジスタ

例えば、次のように表示されます。

#0002: GR1:      3 = #0003 = 0000000000000011
-T
--tracelogical

-tと同じように、プログラム実行中のレジスタの値を表示します。 ただし-tと異なり、<値の10進数表現>は符号の付かない10進数です。 値の範囲は0から65535です。

-d
--dump

メモリの内容をすべて表示します。

-M <MEMORYSIZE>
--memorysize <MEMORYSIZE>

アセンブルおよび実行時のメモリサイズ<MEMORYSIZE>を0から65535の範囲で指定します。 指定しない場合、512です。

-C <CLOCKS>
--clocks <CLOCKS>

実行時のクロック周波数<CLOCKS>を0より大きい整数で指定します。 指定しない場合、クロック周波数は5000000です。

-v
--version

casl2のバージョンを表示して終了します。

-h
--help

casl2の使用方法を表示して終了します。


Next: , Previous: , Up: Top   [Contents]

4 comet2の呼び出し

comet2は、引数として指定されたオブジェクトファイルを仮想マシンCOMET II上で実行します。 オブジェクトファイルは、casl-oまたは-Oを指定して出力します。

$ comet2 hello.o

引数で指定できるオブジェクトファイルは1つだけです。 引数が指定されない場合は、エラーメッセージを表示して終了します。 複数の引数を指定した場合、2番目以降の引数は無視されます。

オプション

comet2は、次のオプションを指定できます。

-t
--trace
--tracearithmetic

プログラム実行中のレジスタの値を次の形式で表示します。 <値の10進数表現>は符号の付いた10進数です。 範囲は-32768から32767です。

<PR値の16進数表現>: <レジスタ>: <値の10進数表現> = <値の16進数表現> = <値の2進数表現>[ ='文字']

例えば、次のように表示されます。

#0002: GR1:      3 = #0003 = 0000000000000011

表示されるレジスタには、次の種類があります。

GR0 GR1 GR2 GR3 GR4 GR5 GR6 GR7

汎用レジスタ

SP

スタックポインタ

PR

プログラムレジスタ

FR

フラグレジスタ

-T
--tracelogical

-tと同じように、プログラム実行中のレジスタの値を表示します。 ただし、-tと異なり、<値の10進数表現>は符号の付かない10進数です。 値の範囲は0から65535です。

-d
--dump

メモリの内容をすべて表示します。

-M <MEMORYSIZE>
--memorysize <MEMORYSIZE>

実行時のメモリサイズ<MEMORYSIZE>を0から65535の範囲で指定します。 指定しない場合、512です。

-C <CLOCKS>
--clocks <CLOCKS>

実行時のクロック周波数<CLOCKS>を0より大きい整数で指定します。 指定しない場合、5000000です。

-v
--version

comet2のバージョンを表示して終了します。

-h
--help

comet2の使用方法を表示して終了します。


Next: , Previous: , Up: Top   [Contents]

5 dumpwordの呼び出し

dumpwordは引数として指定された数値を、整数、#0000から#FFFFまでの範囲の16進数、2進数で表示します。 文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。 引数は、10進数または先頭に「#」の付いた16進数で指定します。 表示される整数は、オプションにより符号付きか符号なしかを指定します。 オプションなしの場合は符号付きです。 整数の範囲は、符号付きの場合は-32768以上32767以下、符号なしの場合は0以上65535以下です。

$ dumpword 10
    10:     10 = #000A = 0000000000001010 = '\n'

引数が指定されない場合は、使い方を表示して終了します。 複数の引数を指定した場合、1つ目の引数だけが表示され、2つ目以降の引数は無視されます。

注意

マイナスの数や16進数はシェルの仕様により、そのままでは指定できません。

マイナスの数を指定するときは、次のように--を付けます。

$ dumpword -- -72
   -72:    -72 = #FFB8 = 1111111110111000

先頭に「#」を付けて16進数を指定するときは、次のように「’」で囲みます。

$ dumpword '#0048'
 #0048:     72 = #0048 = 0000000001001000 = 'H'

オプション

dumpwordは、次のオプションを指定できます。

-a
--arithmetic

出力される整数の範囲を-32,768以上32,767以下にします。 オプションなしの場合と同じです。

-l
--logical

出力される整数の範囲を0以上65,535以下にします。

-v
--version

dumpwordのバージョンを表示して終了します。

-h
--help

dumpwordの使用方法を表示して終了します。


Previous: , Up: Top   [Contents]

6 CASL2LIBマニュアル


Next: , Previous: , Up: CASL2LIB Manual   [Contents]

6.1 ABS - abs.casl

GR1を符号付き整数とみなし、絶対値に変換

入力

GR1

符号付き整数

出力

GR1

入力された値の絶対値

OF

入力された値が-32768の場合、1

SF

入力された値が負数(-32767から-1)の場合、1

依存する副プログラム

なし

使用例

;;; CASL2LIB > ABSを呼び出し、-1の絶対値を表示
MAIN    START
        LD      GR1,A
        CALL    ABS
        CALL    OUTA
        RET
A       DC      -1
        END
$ casl2 call_abs.casl $CASL2LIB/abs.casl $CASL2LIB/outa.casl \
  $CASL2LIB/divl.casl $CASL2LIB/rev.casl
1

Next: , Previous: , Up: CASL2LIB Manual   [Contents]

6.2 DIVA - diva.casl

符号付き整数の割算を筆算方式で行う

入力

GR1

被除数

GR2

除数

出力

GR0

GR3

剰余

OF

次の場合、1

SF

商が負数(-32767から-1)の場合、1

ZF

商が0の場合、1

依存する副プログラム

使用例

;; CASL2LIB > DIVAを呼び出し、-32767 / 255 の商と剰余を表示
MAIN    START
BEGIN   LD      GR1,A
        LD      GR2,B
        CALL    DIVA
        JOV     ERR
        LD      GR1,GR0
        CALL    OUTA
        LD      GR1,GR3
        CALL    OUTA
        JUMP    FIN
ERR     OUT     EMSG,ELEN
FIN     RET
A       DC      -32767
B       DC      255
EMSG    DC      'error'
ELEN    DC      5
        END
$ casl2 call_diva.casl $CASL2LIB/diva.casl $CASL2LIB/divl.casl \
  $CASL2LIB/outa.casl $CASL2LIB/abs.casl $CASL2LIB/rev.casl
-128
-127

Next: , Previous: , Up: CASL2LIB Manual   [Contents]

6.3 DIVL - divl.casl

符号なし整数の割算を筆算方式で行う

入力

GR1

被除数

GR2

除数

出力

GR0

GR3

剰余

OF

GR2が0の場合、1

SF

商が32768から65535の場合、1

ZF

商が0の場合、1

依存する副プログラム

なし

使用例

;; CASL2LIB > DIVLを呼び出し、65534 / 255 の商と剰余を表示
MAIN    START
BEGIN   LD      GR1,A
        LD      GR2,B
        CALL    DIVL
        JOV     ERR
        LD      GR1,GR0
        CALL    OUTL
        LD      GR1,GR3
        CALL    OUTL
        JUMP    FIN        
ERR     OUT     EMSG,ELEN
FIN     RET
A       DC      65534
B       DC      255
EMSG    DC      'error'
ELEN	DC	5
        END
$ casl2 call_divl.casl $CASL2LIB/divl.casl $CASL2LIB/outl.casl \
  $CASL2LIB/rev.casl
256
254

Next: , Previous: , Up: CASL2LIB Manual   [Contents]

6.4 INL - inl.casl

符号なし整数の入力を受け付ける

入力

標準入力

符号なし整数

出力

GR1

入力された符号なし整数

GR0

文字列の長さ。 数字以外が入力された場合は#FFFF

依存する副プログラム

使用例

次のコマンドを実行すると、数値の入力が受け付けられ、入力された数値が表示される。

;;; casl2 -M1024 call_inl.casl $CASL2LIB/inl.casl $CASL2LIB/str2l.casl  $CASL2LIB/mull.casl \
;;; $CASL2LIB/outl.casl $CASL2LIB/divl.casl $CASL2LIB/rev.casl
MAIN    START
LOOP    CALL    INL             ; GR1に数値、GR0に文字列の長さ
        JOV     OV
        AND     GR0,GR0
        JZE     FIN
        CPL     GR0,=#FFFF
        JZE     NAN
        CALL    OUTL
        JUMP    LOOP
OV      CPL     GR0,=#FFFF
        JZE     LENOV
        OUT     OVMSG,MLEN1
        JUMP    LOOP
NAN     OUT     NANMSG,MLEN2
        JUMP    LOOP
LENOV   OUT     LENOVMSG,MLEN3
FIN     RET
OVMSG   DC      'Over 65535'
MLEN1   DC      10
NANMSG  DC      'Not integer'
MLEN2   DC      11
LENOVMSG DC     'Str too long. Stop'
MLEN3   DC      18
        END
$ casl2 -M1024 call_inl.casl $CASL2LIB/inl.casl $CASL2LIB/str2l.casl $CASL2LIB/mull.casl \
  $CASL2LIB/outl.casl $CASL2LIB/divl.casl $CASL2LIB/rev.casl

Next: , Previous: , Up: CASL2LIB Manual   [Contents]

6.5 L2STR - l2str.casl

符号なし整数を文字列に変換する

入力

GR1

符号なし整数

GR2

変換した文字列を格納するアドレス

出力

GR0

文字列の長さ

依存する副プログラム


Next: , Previous: , Up: CASL2LIB Manual   [Contents]

6.6 MAX - max.casl

連続した複数のWORDを符号付き整数とみなして最大値を返す

入力

GR1

WORD値を格納したアドレス

GR2

値の個数

出力

GR0

最大値

依存する副プログラム

なし


Next: , Previous: , Up: CASL2LIB Manual   [Contents]

6.7 MINIM - minim.casl

連続した複数のWORDを符号付き整数とみなして最小値を返す

入力

GR1

WORD値を格納したアドレス

GR2

値の個数

出力

GR0

最小値

依存する副プログラム

なし


Next: , Previous: , Up: CASL2LIB Manual   [Contents]

6.8 MULA - mula.casl


Next: , Previous: , Up: CASL2LIB Manual   [Contents]

6.9 MULL - mull.casl


Next: , Previous: , Up: CASL2LIB Manual   [Contents]

6.10 OUTA - outa.casl


Next: , Previous: , Up: CASL2LIB Manual   [Contents]

6.11 OUTB - outb.casl


Next: , Previous: , Up: CASL2LIB Manual   [Contents]

6.12 OUTD_Q15 - outd_q15.casl


Next: , Previous: , Up: CASL2LIB Manual   [Contents]

6.13 OUTL - outl.casl


Next: , Previous: , Up: CASL2LIB Manual   [Contents]

6.14 REV - rev.casl


Previous: , Up: CASL2LIB Manual   [Contents]

6.15 STR2L - str2l.casl