(since 1998/11)(更新 2012/02/19)

TNO:CASL入門[1]

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

C A S L プ ロ グ ラ ミ ン グ


小野情報設計が開発し提供している、 本テキストとアセンブラ、エミュレータは、次の様な経緯を辿っています。
  1. 「旧CASL」用のものを開発して、教育用に提供していました。
  2. テキストをWebページ用に改修して、 本テキストの旧版として、インターネット上で公開しました。
  3. 「旧CASL」用のアセンブラやエミュレータの仕様を元に、 「CASLII」用仕様を仮定して、本テキストを改訂しました。
  4. アセンブラ&実行系 「Rook」を開発し、 公開しています。 本テキストは、「Rook」仕様変更に合せて、改訂してゆきます。
  5. 新たに、続編に当たる 「CASLII試験対策」を、 有料メール・マガジンとして、配信しています。 又、姉妹編に当たる 「フローチャート入門」を公開しています。
「CASL入門[1]」の内容は、ほぼ動作環境固有のものですが、 文法やコンピュータの基礎知識を一部含みます。 主要部分は、「CASL入門[2]」から始まります。


1-0.はじめに

 このテキストでCASLIIについて学習してゆきますが、 その前にいくつかの注意事項があります。 次の入力上の注意とテキスト中での例示等の各表現方法を理解しておいて下さい。

◆「CASLII」のプログラムの実行には、 「CASLII」アセンブラと「COMETII」エミュレータが必要です。
「CASLII」は「COMETII」のアセンブリ言語です。 「CASLII」のプログラムは、「CASLII」アセンブラによって、 「COMETII」の機械語プログラムに変換されます。
「COMETII」は実在しないコンピュータです。 「COMETII」の機械語プログラムは、 「COMETII」エミュレータによって、実行されます。
説明を簡略化するため、本テキスト中の 「本システム」或いは「アセンブラ」という呼称は、 エミュレータも含んでいる場合があります。 逆に、「エミュレータ」という呼称は、 アセンブラも含んでいる場合があります。 或いは、「Rook」と言う呼称を使用する場合もあります。
◆CASLII実行環境をお持ちの方は、 あらかじめ、操作方法やプログラム入力方法を習得しておいて下さい。 本テキスト中の操作は、 小野情報設計独自のアセンブラやエミュレータを想定しているので、 読み替えて下さい。
◆あらかじめ、英数字等のキー入力の方法を習得しておいて下さい。 (仮名、漢字は不要です。) また、プログラム入力に使用するテキスト・エディタの使用方法も 習得する必要があります。 尚、入力する各文字は半角文字であることに注意してください。
◆データやプログラムの入力時に、キーを押したままにすると、 何度も押したのと同じことになります。 従って、各キーを押す時は、短時間で確実に押す様にして下さい。
◆各記述において 「強調文字」 「イタリック」や 「文字」等は、 単に注目すべき部分を示しており、 入力、表示形式が変わるものではありません。 又、各表示は重要部分を抜粋したもので、 実際の表示と完全に一致するものではありません。
◆次の様な枠で囲まれた部分は、 マウス操作、キーボード入力や表示を表します。
 入力は「緑色の文字」で、 コンピュータからの表示の一部は 「青い文字」で表します。 入力の各行の最後では、リターン・キーを押して下さい。
    
 注意!基本的に、 操作やプログラムの入力機能やメッセージ表示は、 このエミュレータ独自のものです。 ただし、プログラム実行中のデータ入力や表示は、 CASLIIの仕様となっているものもあります。
◆次の様な枠で囲まれた部分は、 エディタで作成するCASLIIの(ソース)プログラムを表します。
    
(学習効果のため、意図的に全角文字にしています。)
◆次の様な枠で囲まれた部分は、 CASLIIの(ソース)プログラムなどの変更部分や参照部分を表します。
    
◆次の様な枠で囲まれた部分は、 参考のために示した図表などを表します。
    


1-1.プログラムの作成とアセンブル

 さあ、これからCASLIIのプログラムの作成方法を学習しましょう。

 それでは、「Rook」画面中の、次の様な内容の左フレーム内の、 「Source」ボタンをクリックしてください。
TNO
Rook









©Copyright 2003-2012 小野智章(小野情報設計)
無断転載を禁止します。
これで、プログラムを入力出来る次の様なページが、 右フレームに表示されます。

TNO:Rook

Source

©Copyright 2003-2005,2009,2012 小野智章(小野情報設計)
無断転載を禁止します。


 この右フレーム内のテキスト欄へ、プログラムを入力してゆきます。 (テキスト欄への入力方法は、使用するブラウザに依存します。)
 では、このテキスト欄に、次の様に入力して下さい。 ただし、入力する各文字は半角文字です。

SAMPLE  START
  END
 「SAMPLE」と「START」の間には、空白という文字が入ります。 又、空白が入っている部分は、空白が1文字以上あれば、 空白の文字数は変わっても構いません。 但し、「START」「END」は、見やすい様に、 空白を並べて同じ位置に並ぶ様にします。 これは、守らなくてもプログラムのルール違反ではないのですが、 マナーとして、出来るだけ守る様にしてください。 (尚、通常は「TAB」も空白と同様に扱われますが、 ブラウザでは正常に入力出来ない様です。 「TAB」が使える場合は、 一般に、8文字目まで空白を並べたのと同じ様に表示されるので、 このマナーに便利に使えます。)

 これが最小のプログラムです。
 「START」というのは、 ここからプログラムが始まりますという意味で、 必ずプログラムの最初に必要です。 「START」の前についている「SAMPLE」は、 プログラム名で、ここではあまり意味がありません。 しかし、何らかのプログラム名を必ず付けて下さい。
 「END」は、 ここまででプログラムが終わりという意味で、 これも必ずプログラムの最後に付けて下さい。
 間には何もありませんね。 従って、何もしないプログラムということです。

 今入力したプログラムは、ソース・プログラムと言って、 人間が読むことが出来ても、 コンピュータには理解出来ません。 そこで、コンピュータにも理解出来るオブジェクト・プログラムという形に 翻訳する必要があります。 CASLIIの場合は、この翻訳作業をアセンブルと言います。

 それでは、左フレーム内の、「Assemble」ボタンをクリックしてください。 この操作で、右フレーム内にアセンブル用のページが表示され、 プログラムがアセンブル(翻訳)されます。
 右フレームのテキスト欄に、次の様なメッセージが表示される筈です。
アセンブル作業を開始します。
アセンブル作業は終了しました。
error:0件 , warn:0件
オブジェクトを生成しました。ただし、オブジェクトの内容はありません。
 「オブジェクトを生成しました。」は、 命令が正しく翻訳出来たことを表します。 「ただし、オブジェクトの内容はありません。」は、 プログラムとして動作可能な内容が無いことを表しています。
 「オブジェクトを生成しました。」が出ず、 「errorにより、オブジェクトは生成しません。」などと 表示されたら、 ソース・プログラムに誤りがあります。 表示内容などを参考にして、 アセンブルで誤りが無くなるまで、 ソース・プログラムの修正とアセンブルを繰り返して下さい。 ソース・プログラムの修正は、 左フレーム内の「Source」ボタンのクリックで 表示されるテキスト欄で、行ってください。 (以後、アセンブル時の誤りに対してソース・プログラムを修正した場合は、 特に断らなくても、再アセンブルして下さい。)


1-2.プログラムの実行

 正しくアセンブルが出来たら、 左フレーム内の「実行系」ボタンをクリックして下さい。 これは、アセンブルして出来たオブジェクト・プログラムを実行する、 エミュレータ(=実行系)を起動する操作です。
 エミュレータが起動すると、右フレームに次の様に表示されます。

TNO:Rook

実行系

©Copyright 2003-2006,2008-2009,2012 小野智章(小野情報設計)
無断転載を禁止します。
実行命令数

Trace
Alart無視
Alart表示
Alart時、停止
2の補数表現
;1命令実行

;
;最初から

;再読込み
FR PR SP
GR0
GR1
GR2
GR3
GR4
GR5
GR6
GR7
; log消去 , (log-max=KB)    ←→
 テキスト欄には、次の様に表示される筈です。
実行準備中。
load start
load object.
オブジェクトが空です。
実行は出来ません。
 これは、「オブジェクト・プログラムが無いので、実行は出来ません」 という意味です。 ソース・プログラムの「START」と「END」の間に何も無いため、 アセンブルの結果、実行可能なプログラムは出来なかったということです。

 では、オブジェクト・プログラムの出来る ソース・プログラムを作成してみましょう。
 次の様にソース・プログラムを修正して下さい。 (「Source」ボタンを使うのでしたね。)
SAMPLE  START
  LAD  GR0,1
  WRITE  
  EXIT
  END
 縦に同じ位置に並んでいる語句は、 やはりマナーとして、空白を並べて同じ位置に並ぶ様にした方が良いです。 (「TAB」が、9文字目以降も同様に、 8の倍数文字目まで空白を並べた様に表示される場合、 やはりこのマナーに便利に使えます。)
 このプログラムをアセンブルして下さい。 正常に終わらなかった場合は、 先ほどと同じく「Error」が出なくなるまで修正をして下さい。

 ソース・プログラムが間違っているにもかかわらず、 正常にアセンブルされることもあります。 その様な場合には、実行時に次の様なエラーが発生することがあります。

error:WRITE命令での指定レジスタは、存在しません。
[SVC命令]
PR[0004;SAMPLE+4]が指定したSVC命令は、実行出来ませんでした。
 「error」は、 全く実行することが出来ないエラーという意味です。
 代わりに「alart」というメッセージが出ることもあります。 これは、状況によっては実行出来るが、 何らかの異常があるので実行を停止するエラーという意味です。
 「PR[0004;SAMPLE+4]が指定したSVC命令は、実行出来ませんでした。」は、 オブジェクト・プログラムのアドレス0004でエラーがあったので、 エミュレータによって強制的に実行を止めたという意味です。 この様に、異常が発生した場合は、 通常自動的にエミュレータやOSが管理してくれます。 しかし、異常ではないプログラムの間違いはエミュレータやOSには分かりません。 注意してソース・プログラムを作成する様にして下さい。

 正しくアセンブルが出来たら、 「実行系」ボタンをクリックして、 エミュレータを起動してください。 右フレームのテキスト欄には、次の様に表示される筈です。
実行準備中。
load start
load object.
load-size=8 word(s).
link to source.
reset OK.
実行準備が出来ました。
 「実行準備が出来ました。」と表示されれば、 オブジェクト・プログラムの実行が可能です。

 さあ、オブジェクト・プログラムを実行するため、 右フレーム内の「Step」ボタンをクリックしてみましょう。
 ソース・プログラムが正しければ、 最初の命令が実行され、次の様に表示される筈です。 違う場合は、ソース・プログラムを修正して下さい。
>1; LAD GR0,1
[LAD命令]
next>2; WRITE 0
 ここで表示されている内容は、動作を確認出来る様に、 CASLIIプログラムではなく 「OSとエミュレータによって表示された」ものです。
 「>1; LAD GR0,1」は、 「(1+1)行目の命令を実行した」という意味です。 本システムでは、行番号は0から始まるので、この様になります。 (詳しい意味は、もう少し先で学習します。)
 「next>2; WRITE 0」は、 次に実行される命令が「(2+1)行目の命令」という意味です。
 もう一度、「Step」ボタンをクリックしてみましょう。 次の命令が実行され、 今度は次の様に表示された筈です。
>2; WRITE 0
[PUSH命令]
 Rook(の現行版)では、この様に、 「Step」ボタンをクリックする毎に、 1命令づつ実行してゆきます。
 「[PUSH命令]」は、 実際に実行された命令が「PUSH命令」であった、という意味です。 この様に、アセンブラによって別の命令に置き換えらることがあります。 又、次に実行される命令が表示されていないのは、 次の命令も「WRITE命令」が置き換えられたものの一部だからです。
 もう一度「Step」ボタンをクリックして、 次の命令を実行すると、次の様に表示される筈です。
GR0=1(0001)
[SVC命令]
next>3; EXIT
 「[SVC命令]」は、 置き換えられ、実際に実行された命令が「SVC命令」であった、という意味です。
 「GR0=1(0001)」の部分は、 テキスト中では青色で表示しましたが、 実際の表示の色は他と同じですね。 これは、CASLIIのプログラムの実行によって出力されたことを、 明示するためです。 これ以降、この色での表示は 「CASLIIプログラムによる表示」を意味することにします。
 更に次の命令を実行すると、次の様に表示される筈です。
>3; EXIT
プログラムは、PR[0006;SAMPLE+6]が指定したEXIT命令で終了しました。
[SVC命令]
 「EXIT命令で終了しました。」は、 「EXIT命令」を実行したことでプログラムの動作を終了した、という意味です。 この状態になると、 更に「Step」ボタンをクリックしても、 次の命令は実行出来ません。 尚、「ReStart」ボタンをクリックすれば、 最初から実行を再開出来ます。

 「PR[0006;SAMPLE+6]」は、 オブジェクト・プログラムの「アドレス0006」で プログラムの実行を終了した、という意味です。

 では、ソース・プログラムの一部を次の様に書き換えてみましょう。
SAMPLE  START
  LAD  GR0,
  WRITE  
  EXIT
  END
 書き換えたら、「実行系」に移動してみて下さい。 多分、次の様に、オブジェクト・プログラムが無いという意味の 表示が出る筈です。
実行準備中。
load start
load object.
オブジェクトが空です。
実行は出来ません。
 これは、ソース・プログラムが書き換えられて、 オブジェクト・プログラムがソース・プログラムと対応しなくなるので、 オブジェクト・プログラムを消したためです。 アセンブルしてオブジェクト・プログラムを作成し直してから、実行して下さい。
 以後、特に断らなくても、ソース・プログラムを変更した後は、 再アセンブルして下さい。 また、アセンブルが正常に終わらなかったら、 先ほどと同じく、「error」が出なくなるまで修正をして下さい。

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

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