CASL課題

CASLの課題
 1回分のコピーは出来ました。でもそれ以降のコピーがうまく出来ませんでした。ジャンプ命令を使うとき番地の設定を絶対番地になるので、一回分のコピーしか出来ない事がわかりました。そこは個人検討しながら作成しみてください。

 ;*** [Let'S CASLⅡ] ***
 REI03   START     
 DATA1     LD        GR2,ZERO
            LD        GR3,N
 LOOP       LD        GR1,DATA1,GR2
            ST        GR1,DATA2,GR2
            ADDA      GR2,ONE
            CPA       GR2,GR3
            JNZ       LOOP
 ZERO       DC        0
 ONE        DC        1
 N          DC        20
 DATA2      DS        20
            END       



CASL課題 05b105

 全体を複製していくものは出来なかったが、前半を参照しながら後半のみ複製を繰り返すものは出来た。
前半を「A」、後半を「B」、複製されたものには「'」をつけるとすると、
   A B B' B'' B''' B'''' ・・・・・・・・・・・・・・・
となり、メモリを1周し、Aの部分が消えるまで動作する。

TEST START
     NOP                ;コピー元アドレスの記憶用
      NOP                ;ループ回数の判定用(1E固定)
      LAD  GR7,#0001     ;カウント増加用(1固定)
      LAD  GR6,#100F     ;ループの始点
      LAD  GR5,#000F     ;ループ回数のカウント
      LD   GR4,GR5       ;コピー元アドレスの算出用
      LAD  GR3,#001E     ;コピー先アドレスの算出用
      ST   GR3,#1001     ;ループ回数判定用の定数を書き込む
      ST   GR6,#1000     ;最初のコピー元アドレスを書き込む
      LD   GR0,#1000,GR4 
 ;コピー元のオペランドを読み込む、コピー範囲の始点、ループの先頭
      ST   GR0,#1000,GR3 ;コピー先にオペランドを書き込む
      ADDA GR3,GR7       ;コピー先アドレス+1
     ADDA GR4,GR7       ;コピー元アドレス+1
     ADDA GR5,GR7       ;ループカウント+1
     CPA  GR5,#1001     ;ループ判定
      JMI  #0000,GR6     ;判定が負ならループの先頭へ
      ADDA GR6,GR5       ;ループの先頭アドレスを移動(1)
      LAD  GR5,#000F     ;ループカウントリセット
      SUBA GR6,GR5       
 ;ループの先頭アドレスを移動(2)、コピー範囲の終点
      END

上記のプログラムは先頭アドレスを#1000としたものである。
仕様したwebシミュレータ  http://www.chiba-fjb.ac.jp/fjb_labo/casl/casl2.cgi (1000ステップで中断される)

タグ:

+ タグ編集
  • タグ:

このサイトはreCAPTCHAによって保護されており、Googleの プライバシーポリシー利用規約 が適用されます。

最終更新:2008年07月25日 19:44
ツールボックス

下から選んでください:

新しいページを作成する
ヘルプ / FAQ もご覧ください。