OS/2008-F05
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
検索
|
最終更新
|
ヘルプ
]
開始行:
* アセンブラ実習 [#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?Famil...
*** 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
終了行:
* アセンブラ実習 [#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?Famil...
*** 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
ページ名: