X-Git-Url: http://j8takagi.net/cgi-bin/gitweb.cgi?p=YACASL2.git;a=blobdiff_plain;f=doc%2Fyacasl2.html;h=e203e8f16754ad2e447ea605be43d52f0eb68543;hp=47d47b548ebc64182f7ee8e727816c57dfa4b68c;hb=d998766540ffc4332d6212a76a38a2242419ffa5;hpb=e934f979236c43e098be7b500e7bc11103911630 diff --git a/doc/yacasl2.html b/doc/yacasl2.html index 47d47b5..e203e8f 100644 --- a/doc/yacasl2.html +++ b/doc/yacasl2.html @@ -121,7 +121,12 @@ pre.example em {
  • 2.4 casl2、comet2、dumpwordのビルド
  • 2.5 casl2の実行テスト
  • 2.6 詳細なテスト -
  • 2.7 環境変数PATHの設定 +
  • 2.7 環境変数の設定 +
  • 3 YACASL2の使い方 -
  • 5.2 ADDL32 - addl32.casl - -
  • 5.3 DIVA -diva.casl +
  • 5.2 DIVA - diva.casl -
  • 5.4 DIVL - divl.casl +
  • 5.3 DIVL - divl.casl -
  • 5.5 INL - inl.casl -
  • 5.6 L2STR - l2str.casl -
  • 5.7 MAX - max.casl -
  • 5.8 MINIM - minim.casl -
  • 5.9 MULA - mula.casl -
  • 5.10 MULL - mull.casl -
  • 5.11 OUTA - outa.casl -
  • 5.12 OUTB - outb.casl -
  • 5.13 OUTD_Q15 - outd_q15.casl -
  • 5.14 OUTL - outl.casl -
  • 5.15 REV - rev.casl -
  • 5.16 STR2L - str2l.casl +
  • 5.4 INL - inl.casl + +
  • 5.5 L2STR - l2str.casl + +
  • 5.6 MAX - max.casl + +
  • 5.7 MINIM - minim.casl + +
  • 5.8 MULA - mula.casl +
  • 5.9 MULL - mull.casl +
  • 5.10 OUTA - outa.casl +
  • 5.11 OUTB - outb.casl +
  • 5.12 OUTD_Q15 - outd_q15.casl +
  • 5.13 OUTL - outl.casl +
  • 5.14 REV - rev.casl +
  • 5.15 STR2L - str2l.casl
  • @@ -204,7 +224,7 @@ pre.example em {

    1 YACASL2の概要

    -

    YACASL2は、Linux上で動作するオープンソースのCASL II処理系です。CASL IIは情報処理試験で用いられるアセンブラ言語で、次の資料により仕様が公開されています。 +

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

    試験で使用する情報処理用語・プログラム言語など(2008年10月版)[PDFファイル] @@ -235,11 +255,11 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

    YACASL2は、LinuxやMac OS Xなど、UNIX系のOS上で動作します。現在動作を確認しているのは、次の環境です。

    インストール時に、tar、gcc、makeが必要です。Linuxの場合は、標準でインストールされていることが多いと思います。Mac OS Xの場合、Xcodeをインストールしてください。 @@ -255,11 +275,14 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

    2.1 YACASL2ファイルのダウンロード

    次の場所から最新版のtar.gzファイルをダウンロードします。 -

    -GitHub/j8takagi/YACASL2のダウンロードページ -
    -

    続けて、対応するmd5sumファイルをダウンロードします(2010年3月6日現在、j8takagi-YACASL2-6323ce4.tar.gz.md5sum)。 +

    + +

    または、githubのダウンロードページからダウンロード、

    @@ -267,7 +290,7 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

    ダウンロードが完了したら、md5sumとdiffで正しくファイルがダウンロードができているかを検証します。 -

      $ md5sum yacasl2.tar.gz | diff -s yacasl2.tar.gz.md5sum -
    +
      $ openssl md5sum yacasl2.tar.gz | diff -s yacasl2.tar.gz.md5sum -
       Files yacasl2.tar.gz.md5sum and - are identical
     

    @@ -326,34 +349,52 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試

    次のコマンドを実行すると、正常にビルドできているかどうかを詳細にテストできます。

      $ make check
    -  194 / 194 tests passed. Details in /home/kazubito/yacasl2/test/integra
    +  195 / 195 tests passed. Details in /home/username/yacasl2/test/integra
       tion/casl2/Test.log
       All tests are succeded.
    -  149 / 149 tests passed. Details in /home/kazubito/yacasl2/test/integra
    +  149 / 149 tests passed. Details in /home/username/yacasl2/test/integra
       tion/comet2/Test.log
       All tests are succeded.
    -  4 / 4 tests passed. Details in /home/kazubito/yacasl2/test/integration
    +  4 / 4 tests passed. Details in /home/username/yacasl2/test/integration
       /dumpword/Test.log
       All tests are succeded.
     
    -

    +

    -

    2.7 環境変数PATHの設定

    +

    2.7 環境変数の設定

    -

    環境変数PATHにYACASL2のディレクトリを追加すると、どのディレクトリでもcasl2、comet2、dumpwordを実行できます。 +

    環境変数を設定することで、YACASL2が使いやすくなります。環境変数の設定は、シェルの初期設定ファイルに追加することでログインしたあと自動的に反映されます。 +するときは、 +環境変数PATHにYACASL2のディレクトリを追加すると、どのディレクトリでもcasl2、comet2、dumpwordを実行できます。また、 -

    環境変数の設定方法は使っているシェルによって異なります。シェルは、次のコマンドで確認できます。 +

    シェルの確認

    + +

    環境変数の設定方法は使っているシェルによって異なります。シェルは、次のコマンドで確認できます。

      $ echo $SHELL
       /bin/bash
     
    -

    現在もっとも多く使われているシェルは、BASHでしょう。BASHでは、次のコマンドを実行すると環境変数PATHにYACASL2のディレクトリが追加されます。 +

    現在もっとも多く使われているシェルは、BASHでしょう。以下、BASHでの設定方法を記載します。 + +

    PATHにYACASL2のディレクトリを追加

    + +

    PATHにYACASL2のディレクトリを追加すると、どのディレクトリでもディレクトリを指定せずにcasl2、comet2、dumpwordを実行できます。YACASL2をホームディレクトリ~にインストールしたときは、次のコマンドで設定できます。

      $ PATH=$PATH:~/yacasl2 && export PATH
     
    -

    シェルの初期設定ファイルに上記のコマンドを追加すれば、今後ログインした後は自動的にどのディレクトリでも casl2、comet2、dumpwordを実行できます。BASHではホームディレクトリにある.bashrcが初期設定ファイルのため、次のコマンドで追加されます。 +

    BASHではホームディレクトリにある.bashrcが初期設定ファイルです。次のコマンドで追加できます。

      $ echo ’PATH=$PATH:~/yacasl2 && export PATH’ >>~/.bashrc
    +
    +

    CASL2LIBの設定

    + +

    環境変数CASL2LIBを設定しておけば、後述するCASL2LIBを利用するときの手間が小さくなります。YACASL2をホームディレクトリ~にインストールしたときは、次のコマンドで設定できます。 + +

      $ CASL2LIB=~/yacasl2/as/casl2lib && export CASL2LIB
    +
    +

    BASHの初期設定ファイル.bashrcには、次のコマンドで追加できます。 + +

      $  echo 'CASL2LIB=~/yacasl2/as/casl2lib && export CASL2LIB' >>~/.bashrc
     

    @@ -371,7 +412,7 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試 MAIN START OUT OBUF,LEN RET - OBUF DC ’Hello, World!’ + OBUF DC 'Hello, World!' LEN DC 13 END

    @@ -665,12 +706,12 @@ YACASL2の動作はCASL IIの仕様に準拠しているため、情報処理試
      $ dumpword 72
           72:     72 = #0048 = 0000000001001000 = 'H'
     
    -

    マイナスの数は、次のように指定します。 +

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

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

    16進数は、次のように指定します。 +

    16進数は、次のように次のように'で囲み#を付けて指定します。

      $ dumpword '#0048'
        #0048:     72 = #0048 = 0000000001001000 = 'H'
    @@ -739,25 +780,56 @@ YACASL2のコマンドとオプションについて解説します。
          
    -s
    --source
    CASLファイルの内容を表示します。 -
    -l
    --label
    ラベルの一覧を表示し、ほかの作業を続行します。 +
    -l
    --label
    ラベルの一覧を次の形式で表示します。表示後、ほかの作業を続行します。 -
    -L
    --labelonly
    ラベルの一覧を表示して終了します。 +
           <プログラム名>.<ラベル名> ---> <アドレスの16進数表現>
    +
    +
    -L
    --labelonly
    -lと同じ形式でラベルの一覧を表示します。表示後、ほかの作業は続行せず、終了します。
    -a
    --assembledetail
    アセンブル詳細結果を表示し、ほかの作業を続行します。 -
    -A
    --show-all
    アセンブル詳細結果を表示して終了します。 +
    -A
    --assembledetailonly
    アセンブル詳細結果を表示して終了します。 + +
    -o<OBJECTFILE>
    --assembleout<OBJECTFILE>
    アセンブル結果をオブジェクトファイル<OBJECTFILE>に出力し、ほかの作業を続行します。出力されたオブジェクトファイルは、comet2で実行できます。オブジェクトファイルを指定しない場合、出力先はa.oです。オブジェクトファイルは1つだけ指定できます。 -
    -o<OBJECTFILE>
    --assembleout
    アセンブル結果をオブジェクトファイル<OBJECTFILE>に出力し、ほかの作業を続行します。出力されたオブジェクトファイルは、comet2で実行できます。オブジェクトファイルを指定しない場合、出力先はa.oです。オブジェクトファイルは1つだけ指定できます。 +
    -O[<OBJECTFILE>]
    --assembleoutonly[<OBJECTFILE>]
    アセンブル結果をオブジェクトファイル<OBJECTFILE>に出力し、終了します。出力されたオブジェクトファイルは、comet2で実行できます。オブジェクトファイルを指定しない場合、出力先はa.oです。オブジェクトファイルは1つだけ指定できます。 -
    -O<OBJECTFILE>
    --assembleoutonly
    アセンブル結果をオブジェクトファイル<OBJECTFILE>に出力し、終了します。出力されたオブジェクトファイルは、comet2で実行できます。オブジェクトファイルを指定しない場合、出力先はa.oです。オブジェクトファイルは1つだけ指定できます。 +
    -t
    --trace
    --tracearithmetic
    プログラム実行中のレジスタの値を次の形式で表示します。 + +
           <PR値の16進数表現>: <レジスタ>: <値の10進数表現> =
    +       <値の16進数表現> = <値の2進数表現>[ ='文字']
    +
    +
      +
    • <PR値の16進数表現>と<レジスタ>、<値の16進数表現>は、4けたの16進数で表されます。<PR値の16進数表現>と<値の16進数表現>には、先頭に#が付きます。範囲は#0000から#FFFFです -
      -t
      --trace
      --tracearithmetic
      実行時のレジスタをトレースします。レジスタには、GR0〜GR7という8個の汎用レジスタと、SP(スタックポインタ)、PR(プログラムレジスタ)、FR(フラグレジスタ)があります。レジストリの内容は、-32,768〜32,767の範囲の整数、#0000〜#FFFFの範囲の16進数、2進数で表示されます。文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。-32768〜32767の範囲の整数を表示するので、算術演算の結果を確認する場合に使えます。 +
    • <値の10進数表現>は符号の付いた10進数です。範囲は-32768から32767です。 + +
    • <値の2進数表現>は、16けたの2進数で表されます。範囲は、0000000000000000から1111111111111111です + +
    • [ ='文字']は、レジストリの値が「文字の組」の範囲に含まれる場合に表示されます。 +
    + +

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

    +
    GR0 GR1 GR2 GR3 GR4 GR5 GR6 GR7
    汎用レジスタ + +
    SP
    スタックポインタ + +
    PR
    プログラムレジスタ + +
    FR
    フラグレジスタ +
    -
    -T
    --tracelogical
    -tと同じく、実行時のレジスタをトレースします。-tと異なり0〜65,535の範囲の整数を表示するので、論理演算の結果を確認する場合に使えます。 +

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

           #0002: GR1:      3 = #0003 = 0000000000000011
    +
    +
    -T
    --tracelogical
    -tと同じように、プログラム実行中のレジスタの値を表示します。ただし、-tと異なり、<値の10進数表現>は符号の付かない10進数です。値の範囲は0から65535です。
    -d
    --dump
    メモリの内容をすべて表示します。 -
    -M <MEMORYSIZE>
    --memorysize <MEMORYSIZE>
    アセンブルおよび実行時のメモリサイズ<MEMORYSIZE>を0〜65,535の範囲で指定します。指定しない場合、メモリサイズは512です。 +
    -M <MEMORYSIZE>
    --memorysize <MEMORYSIZE>
    アセンブルおよび実行時のメモリサイズ<MEMORYSIZE>を0から65535の範囲で指定します。指定しない場合、512です。
    -C <CLOCKS>
    --clocks <CLOCKS>
    実行時のクロック周波数<CLOCKS>を0より大きい整数で指定します。指定しない場合、クロック周波数は5000000です。 @@ -780,15 +852,41 @@ YACASL2のコマンドとオプションについて解説します。

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

    -
    -t
    --trace
    --tracearithmetic
    実行時のレジスタをトレースします。レジスタには、GR0〜GR7という8個の汎用レジスタと、SP(スタックポインタ)、PR(プログラムレジスタ)、FR(フラグレジスタ)があります。レジストリの内容は、-32,768〜32,767の範囲の整数、#0000〜#FFFFの範囲の16進数、2進数で表示されます。文字の組に該当する場合は、「 = 」のうしろに文字が表示されます。-32768〜32767の範囲の整数が表示されるので、算術演算の結果を確認する場合に使えます。 +
    -t
    --trace
    --tracearithmetic
    プログラム実行中のレジスタの値を次の形式で表示します。<値の10進数表現>は符号の付いた10進数です。範囲は-32768から32767です。 + +
           <PR値の16進数表現>: <レジスタ>: <値の10進数表現> = <値の16進数表現> = <値の2進数表現>[ ='文字']
    +
    +
      +
    • <PR値の16進数表現>と<値の16進数表現>は、先頭に#が付いた4けたの16進数で表されます。範囲は、#0000から#FFFFです + +
    • <値の2進数表現>は、16けたの2進数で表されます。範囲は、0000000000000000から1111111111111111です + +
    • [ ='文字']は、レジストリの値が「文字の組」の範囲に含まれる場合に表示されます。 +
    + +

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

           #0002: GR1:      3 = #0003 = 0000000000000011
    +
    +

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

    -T
    --tracelogical
    -tと同じく、実行時のレジスタをトレースします。-tと異なり0〜65,535の範囲の整数を表示するので、論理演算の結果を確認する場合に使えます。 +
    +
    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〜65,535の範囲で指定します。指定しない場合、メモリサイズは512です。 +
    -M <MEMORYSIZE>
    --memorysize <MEMORYSIZE>
    実行時のメモリサイズ<MEMORYSIZE>を0から65535の範囲で指定します。指定しない場合、512です。 -
    -C <CLOCKS>
    --clocks <CLOCKS>
    実行時のクロック周波数<CLOCKS>を0より大きい整数で指定します。指定しない場合、クロック周波数は5,000,000です。 +
    -C <CLOCKS>
    --clocks <CLOCKS>
    実行時のクロック周波数<CLOCKS>を0より大きい整数で指定します。指定しない場合、5000000です。
    -h
    --help
    comet2の使用方法を表示して終了します。
    @@ -798,7 +896,7 @@ YACASL2のコマンドとオプションについて解説します。

    4.3 dumpword

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

      $ dumpword 10
     
    @@ -824,22 +922,22 @@ YACASL2のコマンドとオプションについて解説します。

    5.1 ABS - abs.casl

    -

    入力された整数を絶対値に変換して出力 +

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

    入力

    -
    GR1
    -32768〜32767の整数 +
    GR1
    符号付き整数

    出力

    -
    GR1
    入力された整数の絶対値 +
    GR1
    入力された値の絶対値 -
    OF
    入力されたGR1が-32768の場合、1 +
    OF
    入力された値が-32768の場合、1 -
    SF
    入力されたGR1が負数(-32767〜-1)の場合、1 +
    SF
    入力された値が負数(-32767から-1)の場合、1

    依存する副プログラム

    @@ -848,259 +946,302 @@ YACASL2のコマンドとオプションについて解説します。

    使用例

    -
      ;;; ABSを呼び出す
    +
      ;;; CASL2LIB > ABSを呼び出し、-1の絶対値を表示
       MAIN    START
    -          LAD     GR2,0
    -  MLOOP   CPA     GR2,MLEN
    -          JZE     MFIN
    -          LD      GR1,MVAL,GR2
    -          CALL    OUTA
    +          LD      GR1,A
               CALL    ABS
    -          JOV     PUTOV
    -          JMI     PUTM
    -          OUT     PLUS,=1
    -          JUMP    PUTD
    -  PUTM    OUT     MINUS,=1
    -          JUMP    PUTD
    -  PUTOV   OUT     OV,=2
    -  PUTD    CALL    OUTA
    -          OUT     SEP,MLEN
    -          LAD     GR2,1,GR2
    -          JUMP    MLOOP
    -  MFIN    RET
    -  MVAL    DC      12,-12,1,-1,32767,-32767,0,-32768
    -  MLEN    DC      8
    -  SEP     DC      '--------'
    -  PLUS    DC      '+'
    -  MINUS   DC      '-'
    -  OV      DC      'OV'
    +          CALL    OUTA
    +          RET
    +  A       DC      -1
               END
     
    -
      ../../../../casl2 abs.casl ../../../../as/casl2lib/outa.casl
    -  12
    -  +
    -  12
    -  --------
    -  -12
    -  -
    -  12
    -  --------
    +
      $ casl2 call_abs.casl $CASL2LIBDIR/abs.casl $CASL2LIBDIR/outa.casl \
    +    $CASL2LIBDIR/divl.casl $CASL2LIBDIR/rev.casl
       1
    -  +
    -  1
    -  --------
    -  -1
    -  -
    -  1
    -  --------
    -  32767
    -  +
    -  32767
    -  --------
    -  -32767
    -  -
    -  32767
    -  --------
    -  0
    -  +
    -  0
    -  --------
    -  -32768
    -  OV
    -  -32768
    -  --------
    -
    -

    +

    +

    -

    5.2 ADDL32 - addl32.casl

    +

    5.2 DIVA - diva.casl

    -

    32ビットの値を、連続する2語の領域に格納 +

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

    入力

    -
    GR1
    32ビット値1の先頭アドレス +
    GR1
    被除数 -
    GR2
    32ビット値2の先頭アドレス +
    GR2
    除数

    出力

    -
    GR0
    和の先頭アドレス +
    GR0
    商 + +
    GR3
    剰余 -
    OF
    上位アドレスでオーバーフローした場合、1 +
    OF
    次の場合、1 +
      +
    • GR2が0 -
      SF
      和が負数(-32767〜-1)の場合、1 +
    • GR1が-32768 -
      ZF
      和が0の場合、1 +
    • GR2が-32768 +
    + +
    SF
    商が負数(-32767から-1)の場合、1 + +
    ZF
    商が0の場合、1
    +

    依存する副プログラム

    + +
      +
    • DIVL +
    +

    使用例

    -
      MAIN    START
    -          LAD     GR1,A
    -          LAD     GR2,B
    -          CALL    ADDL32
    -          LD      GR2,GR0
    -          LD      GR1,1,GR2
    -          CALL    OUTL
    -          LD      GR1,0,GR2
    -          CALL    OUTL
    -          RET
    -  A       DC      6,10
    -  B       DC      2,65530
    +
      ;; 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
     
    -
      4
    -  9
    +
      $ casl2 call_diva.casl $CASL2LIBDIR/diva.casl $CASL2LIBDIR/divl.casl \
    +    $CASL2LIBDIR/outa.casl $CASL2LIBDIR/abs.casl $CASL2LIBDIR/rev.casl
    +  -128
    +  -127
     
    -

    依存する副プログラム

    - -

    なし +

    -

    +

    5.3 DIVL - divl.casl

    -

    5.3 DIVA -diva.casl

    - -

    -32,767〜32,767の範囲にある整数の割算(筆算方式)を行う +

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

    入力

    -
    GR1
    被除数 +
    GR1
    被除数 -
    GR2
    除数 +
    GR2
    除数

    出力

    -
    GR0
    商 +
    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 $CASL2LIBDIR/divl.casl $CASL2LIBDIR/outl.casl \
    +    $CASL2LIBDIR/rev.casl
    +  256
    +  254
    +
    +

    -

    GR3
    剰余 +

    5.4 INL - inl.casl

    -
    OF
    除数が0の場合、1 +

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

    SF
    商が負数(-32767〜-1)の場合、1 +

    入力

    -
    ZF
    商が0の場合、1 +
    +
    標準入力
    符号なし整数 +
    + +

    出力

    + +
    +
    GR1
    入力された符号なし整数 + +
    GR0
    文字列の長さ。数字以外が入力された場合は#FFFF

    依存する副プログラム

      -
    • DIVL +
    • STR2L
    - - - - - - - - - - - - - - - - - - - -

    - -

    5.4 DIVL - divl.casl

    - -

    0〜65,535の範囲にある整数の割算(筆算方式)を行う +

    使用例

    + +
      ;; 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 $CASL2LIBDIR/divl.casl $CASL2LIBDIR/outl.casl \
    +    $CASL2LIBDIR/rev.casl
    +  256
    +  254
    +
    +

    + +

    5.5 L2STR - l2str.casl

    + +

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

    入力

    -
    GR1
    被除数 +
    GR1
    符号なし整数 -
    GR2
    除数 +
    GR2
    変換した文字列を格納するアドレス

    出力

    -
    GR0
    商 +
    GR0
    文字列の長さ +
    -
    GR3
    剰余 +

    依存する副プログラム

    -
    OF
    除数が0の場合、1 +
      +
    • DIVL +
    + +

    -

    SF
    商が32,768〜65535の場合、1 +

    5.6 MAX - max.casl

    -
    ZF
    商が0の場合、1 +

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

    入力

    + +
    +
    GR1
    WORD値を格納したアドレス + +
    GR2
    値の個数 +
    + +

    出力

    + +
    +
    GR0
    最大値

    依存する副プログラム

    なし -

    使用例

    +

    -

      MAIN    START
    -  BEGIN   LAD     GR1,101
    -          LAD     GR2,10
    -          CALL    DIVL
    -          RET
    -          END
    -
    -

    +

    5.7 MINIM - minim.casl

    -

    5.5 INL - inl.casl

    +

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

    入力

    -

    +

    +
    GR1
    WORD値を格納したアドレス -

    5.6 L2STR - l2str.casl

    +
    GR2
    値の個数 +
    -

    +

    出力

    -

    5.7 MAX - max.casl

    +
    +
    GR0
    最小値 +
    -

    +

    依存する副プログラム

    -

    5.8 MINIM - minim.casl

    +

    なし

    -

    5.9 MULA - mula.casl

    +

    5.8 MULA - mula.casl

    -

    5.10 MULL - mull.casl

    +

    5.9 MULL - mull.casl

    -

    5.11 OUTA - outa.casl

    +

    5.10 OUTA - outa.casl

    -

    5.12 OUTB - outb.casl

    +

    5.11 OUTB - outb.casl

    -

    5.13 OUTD_Q15 - outd_q15.casl

    +

    5.12 OUTD_Q15 - outd_q15.casl

    -

    5.14 OUTL - outl.casl

    +

    5.13 OUTL - outl.casl

    -

    5.15 REV - rev.casl

    +

    5.14 REV - rev.casl

    -

    5.16 STR2L - str2l.casl

    +

    5.15 STR2L - str2l.casl