アセンブラ実習

目次

実習

CASL?環境(EduCasl)の設定

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

EduCaslの実行

  1. ソースコード入力画面が出るので,プログラムを打ち込む。
  2. プログラムを入力し終わったら,「アセンブル」でアセンブルする。
  3. エラーが出なければ,「実行」ボタンが押せるようになり,実行画面に移れる。
  4. 実行画面では,メモリやレジスタの内容を確認しながら,1行ずつ実行できる。

テストプログラム

  1. メッセージ出力
    TEST1    START
             OUT    BUF, LEN
             RET
    BUF      DC     'HELLO!'
    LEN      DC     6
             END
             
  2. ロードとストア
    TEST2    START
             LD     GR0, DATA1
             LAD    GR1, 20
             ST     GR0, DATA2
             ST     GR1, DATA3 
             RET
    DATA1    DC     10
    DATA2    DS     1
    DATA3    DS     1
             END

課題プログラム

  1. 算術演算(引き算)
    PROG1	START
    ; プログラム
    	LD 	GR0, X
    	LD 	GR1, Y
    	SUBA 	GR0, GR1
    	ST 	GR0, Z
    	RET
    ; データ
    X 	DC 	15
    Y 	DC 	6
    Z 	DS 	1
    	END 
    	
  2. 条件分岐(if)
    PROG2 	START 	MAIN
    ; データ
    DATA1 	DC 5 
    DATA2 	DC 5 
    ANS 	DS 1 
    ; プログラム
    MAIN	LD 	GR0, DATA1 
    	CPA 	GR0, DATA2 
    	JZE 	SKIP1 
    	LAD 	GR0, 0 
    	JUMP 	SKIP2 
    SKIP1	LAD 	GR0, 1 
    SKIP2	ST 	GR0, ANS 
    	RET 
    	END 
    
  3. アドレス修飾(配列)
    PROG3	START
    ; プログラム
    	LAD 	GR0, 10
    	LAD	GR1, 0
    	LD	GR2, N
    	LAD	GR3, 1
    LOOP	ST	GR0, A, GR1
    	ADDA	GR1, GR3
    	CPA	GR1, GR2
    	JMI	LOOP
    	RET
    ; データ
    A 	DS 	5
    N 	DC 	5
    	END 
    
  4. 繰り返し(ループ)
    PROG4	START	MAIN
    ; プログラム
    MAIN 	XOR 	GR0, GR0 
    	LD 	GR1, N
    	LDA	GR2, 1
    LOOP 	ADDA 	GR0, GR1
    	SUBA 	GR1, GR2
    	JNZ 	LOOP
    	ST 	GR0, TOTAL
    	RET 
    ; データ
    N	DC 	10
    SUM 	DS	1
    	END 
    	
  5. サブルーチン(レジスタ渡し)
    PROG5	START 	MAIN
    DATA1	DC 	5
    DATA2	DC 	10
    ANS	DS	1
    ; メインルーチン
    MAIN 	LD 	GR0, DATA1
    	LD	GR1, DATA2
    	CALL	MAX
    	ST	GR0, ANS
    	RET
    ; サブルーチン
    MAX	CPA	GR0, GR1
    	JPL	MAXR
    	LD	GR0, GR1	
    MAXR	RET 
    	END 
    
  6. サブルーチン(スタック渡し)
    PROG6 START 	MAIN
    DATA1	DC 	5
    DATA2	DC 	10
    ANS	DS	1
    ; メインルーチン
    MAIN 	LD 	GR0, DATA1
    	PUSH	GR0
    	LD	GR0, DATA2
    	PUSH	GR0
    	CALL	MAX
    	ST	GR0, ANS
    	RET
    ; サブルーチン
    	; 戻り先番地をGR7に退避
    MAX	POP	GR7
    	POP	GR0
    	POP	GR1
    	CPA	GR0, GR1
    	JPL	MAXR
    	LD	GR0, GR1
    	; 戻り先番地をスタックに戻す
    MAXR	PUSH	0, GR7
    	RET 
    	END

CASL?エミュレータ

参考資料

CASL?公式 仕様書

おすすめ資料

その他の資料


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