第3日午後 アセンブラ(CASL)実習

目次

実習

CASL?環境(EduCasl)の設定

  1. 以下からCASLのエミュレータをダウンロード
  2. 展開して,Setup.Exeを実行(ダブルクリック)

プログラムの実行

  1. メッセージ出力
    HELLO    START
             OUT    BUF,LEN
             RET
    BUF      DC     'HELLO!'
    LEN      DC     6
             END
  2. ロードとストア
    EXLD     START
             LD     GR0, DATA1
             LAD    GR1, 20
             ST     GR0, DATA2
             ST     GR1, DATA3 
             RET
    DATA1    DC     10
    DATA2    DS     1
    DATA3    DS     1
             END
  3. 演算(減算)
    EXSUB	START
    	LD	GR1,X
    	LD	GR2,Y
    	SUBA	GR1,GR2
    	ST	GR1,Z
    	RET
    X	DC	15
    Y	DC	6
    Z	DS	1
    	END
  4. 演算(加算と減算)
    EXSUB  START
            LD      GR0,X
            ADDA    GR0,Y
            SUBA    GR0,Z
            ST      GR0,W
            RET
    X       DC      90
    Y       DC      87
    Z       DC      77
    W       DS      1
            END
  5. 条件分岐(if)
    EXIF	START
    	LD	GR1,DATA1
    	CPA	GR1,DATA2
    	JZE	SKIP1
    	LAD	GR2,0
    	JUMP	SKIP2
    SKIP1	LAD	GR2,1
    SKIP2	ST	GR2,ANS
    	RET
    DATA1	DC	5
    DATA2	DC	5
    ANS	DS	1
    	END

上級課題

  1. 繰り返し(while)
    EXLOOP	START
    	LAD	GR1,0	;GR1の初期値を0とする
    LOOP	LD	GR2,GR1
    	LD	GR3,GR2
    	LD	GR4,GR3
    	ADDA	GR1,C1	;GR1を1増やす
    	CPA	GR1,N
    	JMI	LOOP
    	RET
    N	DC	3
    C1	DC	1
    	END
  2. ループと演算の組み合わせ
    SUM10      START  ENTRY
    ; データ
    COUNT    DC     10         ; 値10
    C1       DC     1          ; 値1
    TOTAL    DC     0          ; 結果
    ; プログラム
    ; GR1=カウンタ
    ; GR2=総和
    ENTRY    LD     GR1,COUNT  ; カウンタの初期値
             XOR    GR2,GR2    ; 総和の初期値=0
    LOOP     ADDL   GR2,GR1    ; 総和に加算
             SUBL   GR1,C1     ; カウンタから1を引く
             JNZ    LOOP       ; 0でなければLOOPへ飛ぶ
             ST     GR2,TOTAL  ; 総和をストア
             RET
             END
  3. DCで確保した数値の内容を4倍するCASLプログラムを作成しなさい。
  4. DCで確保した数値の内容が偶数か奇数かを判定するCASLプログラムを作成しなさい。
  5. 10以上20未満の整数の合計を計算するCASLプログラムを作成しなさい。

CASL?エミュレータ

参考資料

CASL?公式 仕様書

おすすめ資料

その他の資料



トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS