(since 1998/11)(更新 2004/02/26)

TNO:CASL入門[6]

情報系/IT系の広告を掲載しています。(広告一覧)
©Copyright 1998-2001,2003,2004 小野智章(小野情報設計)
無断転載を禁止します。
本ページは、「Rook」仕様に対応済みです。
CASL入門[目次]
CASL入門[索引]
CASL入門[5]
CASL入門[7]


6-1.文字の出力と文字列

 文字データを数値としてではなく、 文字としてそのまま表示することも出来ます。 文字データの表示(出力)には、 「OUT」命令を使います。
SAMPLE  START
  OUT  CHAR,LEN
  EXIT
CHAR  DC  ’5’
LEN  DC  
  END
5
プログラムは、PR[0006;SAMPLE+6]が指定したEXIT命令で終了しました。
 「OUT CHAR,LEN」は、 アドレス「CHAR」からの1文字を表示するという意味です。 アドレス「LEN」には表示する文字数が入っています。 この表示する文字数を変えることで、 1文字だけでは無く、沢山の文字を一度に表示させることも出来ます。

 実際にやってみましょう。
SAMPLE  START
  OUT  STRING,LEN
  EXIT
STRING  DC  ’TEST−DATA’
LEN  DC  
  END

TEST
プログラムは、PR[0006;SAMPLE+6]が指定したEXIT命令で終了しました。
 アドレス「STRING」からの文字列の内、 アドレス「LEN」に入っている文字数分だけ、 表示されていることに注意して下さい。

 プログラムの「DC」命令に記述した固定した文字列以外にも、 プログラム中で表示する文字を変えることも出来ます。 次のプログラムは、レジスタに入れた数値を16進数として、 その1桁分の文字だけを表示します。
SAMPLE  START
        LAD  GR1,10
  LD  GR0,HEX,GR1
  ST  GR0,CHAR
  OUT  CHAR,LEN
  EXIT
HEX  DC  ’0123456789ABCDEF’
CHAR  DC  55
LEN  DC  
  END
A
プログラムは、PR[000C;SAMPLE+12]が指定したEXIT命令で終了しました。
 アドレス「HEX」から1桁の16進数の数字が順に並んだ中から、 数値10に対応した文字を取り出しています。 その文字を、アドレス「CHAR」に入れて、表示しています。

 ところで、「CHAR DC 55」の中の「55」は、使われていません。 「A」という1文字を入れる場所でしかない訳です。 CASLIIには、この様な場合に、場所だけを用意する「DS」命令があります。 そこで、この1行を次の様に書き換えて下さい。
CHAR  DS  
 「DS」命令は、場所を用意するだけで、その中のデータは不明です。 「DS」の右の「1」は、用意する場所の大きさです。 ここの数値を変えることでもっと大きな場所を用意することも出来ます。 尚、この部分の数値の記述には10進数しか使えません。
 ついでに少し、実行結果の見栄えを良くしておきましょう。
SAMPLE  START
        LAD  GR1,7
  LD  GR0,HEX,GR1
  ST  GR0,CHAR
  OUT  STRING,LEN
  EXIT
HEX  DC   ’0123456789ABCDEF’
STRING  DC  ’HEX=’
CHAR  DS  
  DC  ’.’
LEN  DC  
  END
HEX=7.
プログラムは、PR[000C;SAMPLE+12]が指定したEXIT命令で終了しました。
 この様に、プログラム上はデータを表す命令が別れていても、 アドレスが連続していれば、ひと続きの文字列と見なすことが出来ます。


6-2.文字列の入力

 文字列を表示(出力)するだけではなく、 文字列を(キーボードより)入力することも出来ます。 文字列を入力するには「IN」命令を使います。
 入力された文字列を、そのまま表示するプログラムを作ってみましょう。
SAMPLE  START
  IN  STRING,LEN
  OUT  STRING,LEN
  EXIT
STRING  DS  256
LEN  DS  
  END
 次の出力例は、「TEST-DATA」と 入力した場合の実行例です。 緑色の文字は キーボードから入力した文字です。
TEST-DATA
TEST-DATA
プログラムは、PR[000C;SAMPLE+12]が指定したEXIT命令で終了しました。
 「IN STRING,LEN」は、 アドレス「STRING」からの場所に文字列を入力し、 その長さをアドレス「LEN」に入れます。 「IN」命令の記述形式は、「OUT」命令と同様です。
 この「IN」命令を使う時、 文字列が入る場所の大きさが十分あることが必要です。 このプログラムの例では、257文字以上を入力すると、 257文字目以降の文字がアドレス「LEN」以降の内容を壊してしまいます。 (実際には、「IN」命令では、 256文字までしか入力出来ない様になっています。)

CASL入門[目次]
CASL入門[索引]
CASL入門[5]
CASL入門[7]
学習室
トップ・ページへ

質問・ご意見等、お待ちしております。
小野智章(小野情報設計) 
Mail to Mail連絡先
©Copyright 1998-2001,2003,2004 小野智章(小野情報設計)
無断転載を禁止します。