#author("2022-04-20T20:19:30+09:00","","")
#author("2022-04-20T20:24:15+09:00","","")
* アセンブラ実習 [#o1cacc26]

** 目次 [#gf632670]

#contents

** 実習 [#v824cfc4]

*** CASL II 環境(EduCasl)の設定 [#k207c796]

+ 以下からCASLのエミュレータをダウンロードする。
-- http://vilab.org/summer/educasl.zip
+ 展開して,Setup.Exeを実行(ダブルクリック)する。
+ スタートメニューからEduCaslを実行する。
-- EduCaslが動かない人は,これを(.NET 1.1)入れる必要があるかもしれない。
--- http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3&DisplayLang=ja

*** EduCaslの実行 [#d65839c7]

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

*** テストプログラム [#vb872496]

- 以下のプログラムを入力して,どのような動作をするか調べてみなさい。

+ メッセージ出力
 TEST1	START
 	OUT	BUF,LEN
 	RET
 BUF	DC	'HELLO!'
 LEN	DC	6
 	END
          
+ ロードとストア
 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

*** 課題プログラム [#c0ac930f]

- 以下のプログラムを入力して,どのような動作をするか調べてみなさい。
- フローチャートを描きなさい。

+ 算術演算(引き算)
 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 
 	
+ 条件分岐(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 
 
+アドレス修飾(配列) 	
 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 
 
+ 繰り返し(ループ)
 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 
 	
+ サブルーチン(レジスタ渡し)
 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 
 
+サブルーチン(スタック渡し)
 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 II エミュレータ [#o003b2b5]

- EduCasl
-- http://www.vector.co.jp/soft/winnt/prog/se369290.html
-- 動かない人は,これを(.NET 1.1)入れる必要があるかも。
--- http://www.microsoft.com/downloads/details.aspx?FamilyID=262d25e3-f589-4842-8157-034d1e7cf3a3&DisplayLang=ja
- Web版CASLIIエミュレータ
-- http://www.chiba-fjb.ac.jp/fjb_labo/casl/casl2.cgi
- その他のエミュレータ
-- http://www.vector.co.jp/vpack/filearea/win/prog/casl/

** 参考資料 [#g316191c]

*** CASL II 公式仕様書 [#ed8e883d]

- アセンブラ言語の仕様
-- http://www.jitec.jp/1_01mosikomi/18a_annaisho/18a_11.pdf

*** おすすめ資料 [#m6a62b3e]

- COMET Ⅱ & CASL Ⅱ
-- http://www016.upp.so-net.ne.jp/masuda2/text2/casl2/index.html
- CASL入門コーナー
-- http://www5a.biglobe.ne.jp/~teamcasl/caslkozatop.htm
- だれでも一度はアセンブラを学んでおこう!(日経BP ITPro)
-- http://itpro.nikkeibp.co.jp/members/ITPro/ITBASIC/20021218/1/
-- http://itpro.nikkeibp.co.jp/members/ITPro/ITBASIC/20021220/1/
-- http://itpro.nikkeibp.co.jp/members/ITPro/ITBASIC/20021224/1/
-- http://itpro.nikkeibp.co.jp/members/ITPro/ITBASIC/20021225/1/
-- http://itpro.nikkeibp.co.jp/members/ITPro/ITBASIC/20021226/1/

*** その他の資料 [#b15921c5]

- アセンブラ言語入門 CASLⅡ(東北福祉大学)
-- http://tfusvsun.tfu.ac.jp/mko/CASL2/index.html
- CプログラマのためのCASLII入門講座
-- http://www.officedaytime.com/dcasl2/pguide/index.html
- CASLII入門
-- http://ww3.tiki.ne.jp/~tno2/shikaku/casl_content.htm
- 計算機の原理とアセンブラ(電気通信大学) 
--http://www.mlab.ice.uec.ac.jp/mit/text/Jikken/casl/casl.html
- 計算機基礎(三重大学)
-- http://www.cs.info.mie-u.ac.jp/~toshi/lectures/introcomp/index.html


トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS