- 追加された行はこの色です。
- 削除された行はこの色です。
* アセンブラ(CASL)実習 [#o1cacc26]
#author("2022-04-20T20:24:15+09:00","","")
* アセンブラ実習 [#o1cacc26]
** 目次 [#gf632670]
#contents
** 実習 [#v824cfc4]
*** CASL?環境(EduCasl)の設定 [#k207c796]
*** 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]
*** テストプログラム [#vb872496]
- 以下のプログラムを入力して,どのような動作をするか調べてみなさい。
+ メッセージ出力
TEST1 START
OUT BUF, LEN
RET
BUF DC 'HELLO!'
LEN DC 6
END
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
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]
*** 課題プログラム [#c0ac930f]
+ 演算(減算)
- 以下のプログラムを入力して,どのような動作をするか調べてみなさい。
- フローチャートを描きなさい。
+ 算術演算(引き算)
PROG1 START
; プログラム
LD GR0, X
LD GR1, Y
SUBA GR0, GR1
ST GR0, Z
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
MAIN LD GR0,DATA1
CPA GR0,DATA2
JZE SKIP1
LAD GR0, 0
LAD GR0,0
JUMP SKIP2
SKIP1 LAD GR0, 1
SKIP2 ST GR0, ANS
SKIP1 LAD GR0,1
SKIP2 ST GR0,ANS
RET
END
+ 繰り返し(while)
+アドレス修飾(配列)
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
MAIN XOR GR0,GR0
LD GR1,N
LDA GR2,1
LOOP ADDA GR0,GR1
SUBA GR1,GR2
JNZ LOOP
ST GR0, TOTAL
ST GR0,TOTAL
RET
; データ
N DC 10
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
MAIN LD GR0,DATA1
LD GR1,DATA2
CALL MAX
ST GR0,ANS
RET
; サブルーチン
MAX CPA GR0, GR1
JPL MAXR
LD GR0, GR1
MAX CPA GR0,GR1
JPL MAXR
LD GR0,GR1
MAXR RET
END
END
+サブルーチン(スタック渡し)
PROG6 START MAIN
DATA1 DC 5
DATA2 DC 10
ANS DS 1
; メインルーチン
MAIN LD GR0, DATA1
MAIN LD GR0,DATA1
PUSH GR0
LD GR0, DATA2
LD GR0,DATA2
PUSH GR0
CALL MAX
ST GR0, ANS
ST GR0,ANS
RET
; サブルーチン
; 戻り先番地をGR7に退避
MAX POP GR7
POP GR0
POP GR1
CPA GR0, GR1
CPA GR0,GR1
JPL MAXR
LD GR0, GR1
LD GR0,GR1
; 戻り先番地をスタックに戻す
MAXR PUSH 0, GR7
MAXR PUSH 0,GR7
RET
END
** CASL?エミュレータ [#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版CASL?エミュレータ
-- http://www.chiba-fjb.ac.jp/fjb_labo/casl/casl2.cgi
- その他のエミュレータ
-- http://www.vector.co.jp/vpack/filearea/win/prog/casl/
- IPAの純正エミュレータ
** 参考資料 [#g316191c]
*** CASL?公式 仕様書 [#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