#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