HYSOFT

チュートリアル

CaslBuilderを使ってみましょう。

ここでは、DATA1番地の内容からDATA2番地の内容までの和を求め、ANS番地に格納するプログラム(subwa.cas) を実行してみます。また、デバッガの一機能であるアニメート実行,トレース実行,ステップ実行,ブレークポイントの設定, レジスタの内容の変更,メモリの内容の変更,スタックの追跡を学びます。

なおデバッグウィンドウは以下のようになっています。

subwa.cas
;機能 DATA1番地の内容からDATA2番地の内容までの和を求め、ANS番地に格納する。
;      ただし,DATA1番地の内容 <= DATA2番地の内容とする。
MAIN    START
        LD      GR1,DATA1
        LD      GR2,DATA2
        CALL    SUBWA
        ST      GR0,ANS
        RET
DATA1   DC      1
DATA2   DC      10
ANS     DS      1
        END
;
SUBWA   START
        PUSH    0,GR1
        LAD     GR0,0
LOOP    CPA     GR1,GR2
        JPL     EXIT
        ADDA    GR0,GR1
        ADDA    GR1,=1
        JUMP    LOOP
EXIT    POP     GR1
        RET
        END

(1)プログラムをコーディングします。

([ファイル]‐[新規])をクリックして新しいエディタを開き, 上記のプログラムをコピーして貼り付けます。

(2)「subwa.cas」というファイル名で保存します。

([ファイル]‐[全て保存])をクリックし、「subwa.cas」 というファイル名で保存します。

(3)アセンブル、リンクを行い、実行します。

([実行]‐[実行])をクリックします。リスティングファイルウインドウにリスティングファイルが表示され、メッセージウインドウにアセンブル、リンクの結果が表示され、標準入出力ウインドウに実行結果が表示されます。

(4)アニメート実行を体験しましょう。

([実行]‐[デバッグ開始])をクリックします。デバッグウインドウ が表示されます。

([実行]‐[アニメート実行])をクリックします。プログラムの 実行の流れがよくわかると思います。

(5)トレースおよびステップを体験しましょう。

([実行]‐[デバッグ開始])をクリックします。そして,([実行]‐[トレース])または,([実行]‐[ステップ])をクリックしていきます。1ステップずつ実行されます。なお,「トレース」と「ステップ」の違いは「トレース」はとにかく1ステップずつ追跡していきますが,「ステップ」はCALL命令でサブルーチンに飛ぶときは、そのサブルーチンは一気に実行するところです。比較してみてください。

(6)メモリの内容の変更を体験しましょう。

ここではDATA2番地の内容を10から5に変更して実行してみます。ANS番地には1から5までの和である15が格納されるはずです。

([実行]‐[デバッグ開始])をクリックします。そして,010A(DATA1)番地のメモリの内容000Aをダブルクリックします。

000Aを0005に変更します。

([実行]‐[実行(GO)])をクリックします。ANS(010B)番地に1から5までの和である15が格納されているのがわかります。

(7)ブレークポイントまでジャンプし,レジスタの内容の変更を体験しましょう。

ここではサブルーチンSUBWAの入り口と出口にブレークポイントを設定し,そこまで一気に実行し,レジスタの内容を変更し,サブルーチンSUBWAの動作を確認することにします。

([実行]‐[デバッグ開始])をクリックします。そして,SUBWAの行とEXITの行をダブルクリックしてブレークポイントを設定します。

([実行]‐[実行(GO)])をクリックします。SUBWAの行で実行が停止します。そして,レジスタGR2の内容000Aをダブルクリックします。

000Aを0005に変更します。

([実行]‐[実行(GO)])をクリックします。EXITの行で実行が停止します。そして,サブルーチンSUBWAの返却値であるGR0の内容が1から5までの和である15になっているのがわかります。

(8)スタックの追跡を体験しましょう。

サブルーチン呼び出し,PUSH命令,POP命令,呼び出し側への復帰にかかわるスタックの変化を見ていきましょう。

([実行]‐[デバッグ開始])をクリックします。そして, SPの内容を確認すると091Aとなっていることがわかります。

091A番地の内容が見えるようにメモリダンプペインを右クリックし「アドレスを指定してジャンプ(A)」を選択します。そして,091A番地にジャンプします。

F000となっていることがわかります。

あとは,([実行]‐[トレース])をクリックしていきスタックの内容を確認していきます。