* 第3日 アセンブラ(CASL)実習 [#md48d746]
** 目次 [#a78566ca]
#contents
** 実習 [#m74c7840]
*** CASL?環境(EduCasl)の設定 [#j9b74607]
+ 以下から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の実行 [#l8d48d9e]
+ ソースコード入力画面が出るので,プログラムを打ち込む。
+ プログラムを入力し終わったら,「アセンブル」でアセンブルする。
+ エラーが出なければ,「実行」ボタンが押せるようになり,実行画面に移れる。
+ 実行画面では,メモリやレジスタの内容を確認しながら,1行ずつ実行できる。
*** プログラムの実行 [#m5990cd8]
- 以下のプログラムを入力して,どのような動作をするか調べてみなさい。
- 動作の要点を言葉で説明し,さらにフローチャートを書きなさい。
+ メッセージ出力
HELLO START
OUT BUF,LEN
RET
BUF DC 'HELLO!'
LEN DC 6
END
+ ロードとストア
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
+ 演算(減算)
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
+ 演算(加算と減算)
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
+ 条件分岐(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
*** 上級課題 [#n50172fa]
+ 繰り返し(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
+ ループと演算の組み合わせ
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
+ DCで確保した数値の内容を4倍するCASLプログラムを作成しなさい。
+ DCで確保した数値の内容が偶数か奇数かを判定するCASLプログラムを作成しなさい。
+ 10以上20未満の整数の合計を計算するCASLプログラムを作成しなさい。
- もし時間が余ったら申告してください。さらに課題を作ります。
** CASL?エミュレータ [#v11475f3]
- 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の純正エミュレータ
** 参考資料 [#u6d84df9]
*** CASL?公式 仕様書 [#rb22e1d0]
- アセンブラ言語の仕様
-- http://www.jitec.jp/1_01mosikomi/18a_annaisho/18a_11.pdf
*** おすすめ資料 [#ea859b3c]
- 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/
*** その他の資料 [#r83e136b]
- アセンブラ言語入門 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