#author("2022-04-20T20:25:42+09:00","","") #author("2022-04-20T20:28:27+09:00","","") * 第3日後半 アセンブラ(CASL)実習 [#jbb0621e] ** 目次 [#s35eae2d] #contents ** 実習 [#q1ac8ddf] *** CASL?環境(EduCasl)の設定 [#q383e9c3] + 以下から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の実行 [#tdb4c138] + ソースコード入力画面が出るので,プログラムを打ち込む。 + プログラムを入力し終わったら,「アセンブル」でアセンブルする。 + エラーが出なければ,「実行」ボタンが押せるようになり,実行画面に移れる。 + 実行画面では,メモリやレジスタの内容を確認しながら,1行ずつ実行できる。 *** プログラムの実行 [#m8ea2f64] - 以下のプログラムを入力して,どのような動作をするか調べてみなさい。 - 動作の要点を言葉で説明し,さらにフローチャートを書きなさい。 + メッセージ出力 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 *** 上級課題 [#m1f36563] + 繰り返し(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?エミュレータ [#ff70d8ef] - 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の純正エミュレータ ** 参考資料 [#e5044631] *** CASL?公式 仕様書 [#y96dd718] - アセンブラ言語の仕様 -- http://www.jitec.jp/1_01mosikomi/18a_annaisho/18a_11.pdf *** おすすめ資料 [#ja73465c] - 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/ *** その他の資料 [#c336f693] - アセンブラ言語入門 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