Upload
nia
View
57
Download
0
Embed Size (px)
DESCRIPTION
マイクロプロセッサ (第 1 回). P. Ravindra S De Silva. はじめに. 情報・知能工学系 学生実験サイト http://www.cs.tut.ac.jp/jikken/ 実験の説明資料などは Web 上で公開中 http://www.icd.cs.tut.ac.jp/~ravi/MP/index.html Report should submit to [email protected] ※ 実験レポートは PDF ファイルで提出すること. 日程 (p.25 参照 ). 第1回 イントロダクション - PowerPoint PPT Presentation
Citation preview
2
はじめに
情報・知能工学系 学生実験サイト http://www.cs.tut.ac.jp/jikken/
実験の説明資料などは Web 上で公開中 http://www.icd.cs.tut.ac.jp/~ravi/MP/index.html
受け取りは、メールにて行う。 宛先は[email protected]
※実験レポートは PDF ファイルで提出すること
3
日程 (p.26 参照 )
第1回イントロダクション
( 課題 3.1 加算 )
第2回基本プログラミング
( 課題 3.2 乗算 )
第3回応用プログラミング( 課題 3.3 図形描画, 課題 3.4(1) メロディ )
第4回応用プログラミン
グ( 課題 3.4(2) メロ
ディ )
※第 2 回以降は予習 ( プログラムの準備 ) が必須
4
コンピュータの利用
ユーザ
コンピュータ
入力
出力
どのような仕組みで動いているのか ?
5
コンピュータ・ハードウェア
入力装置
出力装置
記憶装置
処理装置
6
コンピュータ・ソフトウェア
入力装置
出力装置
記憶装置
処理装置
アプリケー
ションプログラ
ム
システムプログラム
7
疑問
処理装置 (CPU) はプログラム (≒ ソフトウェア ) をどのように解釈しているのか ?
高級言語によるプログラム
機械語によるプログラム
8
( 今のところの ) 回答
コンパイラ,アセンブラと呼ばれるプログラムを変換するプログラムを使う
高級言語によるプログラム
機械語によるプログラム
アセンブリ言語によるプログラム
コンパイ
ラ
アセンブ
ラ
9
ことばの整理:機械語
CPU が直接理解し実行できる言語のこと プログラムは 0 と 1 の列から構成される CPU ごとに異なる
高級言語によるプログラム
機械語によるプログラム
アセンブリ言語によるプログラム
コンパイ
ラ
アセンブ
ラ
10
ことばの整理:高級言語
人間が使いやすいプログラミング言語 C , C++ , Java , Perl など CPU ごとに異ならない ( 共通 )
高級言語によるプログラム
機械語によるプログラム
アセンブリ言語によるプログラム
コンパイ
ラ
アセンブ
ラ
11
ことばの整理:アセンブリ言語
機械語を人間にわかりやすくした言語 命令が機械語と ( ほぼ ) 1 対 1 に対応 CPU ごとに異なる
高級言語によるプログラム
機械語によるプログラム
アセンブリ言語によるプログラム
コンパイ
ラ
アセンブ
ラ
12
ことばの整理:コンパイル
高級言語によるプログラムをアセンブリ言語によるプログラムに( または機械語によるプログラムに )翻訳すること
高級言語によるプログラム
機械語によるプログラム
アセンブリ言語によるプログラム
コンパイ
ラ
アセンブ
ラ
13
ことばの整理:アセンブル
アセンブリ言語によるプログラムを機械語によるプログラムに
翻訳すること
高級言語によるプログラム
機械語によるプログラム
アセンブリ言語によるプログラム
コンパイ
ラ
アセンブ
ラ
14
この実験の流れ
1. アセンブリ言語によるプログラミング2. 作成したプログラムのアセンブル ( 手作業 )3. 実行 ( 動作の理解 )
機械語によるプログラム
アセンブリ言語によるプログラム
アセンブ
ラ
15
この実験で用いるハードウェア
KUE-CHIP2 教育用の 8 ビットマイクロプロセッサ
≒ CPU
8 ビット= 1 バイト
0 0 0 1 0 0 1 1
13h ←16 進数であることを示す 他にも 13H , 0x13 など
16
KUE-CHIP2 の構造 (p.15 図 1)
17
KUE-CHIP2 の各部:バス
入力バス:入力部分と CPU 内部を結ぶ 出力バス:出力部分と CPU 内部を結ぶ
18
KUE-CHIP2 の各部: ALU
演算ユニット (Arithmetic and Logic Unit) 算術演算,論理演算,アドレスの計算を行う
19
KUE-CHIP2 の各部: ACC
アキュムレータ (accumulator) 演算に利用するレジスタ. 8 ビット 演算対象,演算結果を保持
20
KUE-CHIP2 の各部: IX
インデックスレジスタ (index register) 演算に利用するレジスタ. 8 ビット 演算対象,演算結果を保持 修飾アドレス指定のときのアドレス修飾にも
使用
21
KUE-CHIP2 の各部: FLAG
フラグレジスタ (flag register) 演算・シフト結果により変化. 4 ビット
- - - - CF VF NF ZF
桁上がりフラグ
桁あふれフラグ負フラグ
ゼロフラグp.15 図 2
22
KUE-CHIP2 の各部: PC
プログラムカウンタ (program counter) 次に実行する命令のメモリ上での
アドレスを保持. 8 ビット
23
KUE-CHIP2 の各部: MAR
メモリアドレスレジスタ メモリ操作の対象とするアドレスを保持. 8 ビット
24
KUE-CHIP2 の各部:内部メモリ
512 バイト.バイト単位の番地指定 プログラム領域: 0 ~ 255 番地 データ領域: 256 番地~ 511 番地
プログラム領域
データ領域
000
0FF
1FF
100
011000100
255256
511
~~
p.16 図 3
25
KUE-CHIP2 のアセンブリ言語
命令の種類: p.17 表 1 を参照 言語仕様: p.28 ~ 30 付録 A を参照
機械語フォーマット: 1 バイトか 2 バイト p.16 図 4 を参照
26
0 0 0 0 0 0 0 1
0 0 0 0 0 0 1 0アセンブラ
プログラム例 (p.24 ,リスト 2)
02hBA001000000000001104:
ACCRLL0111010003:
OUT0---000102:
ACC, 01hLD00010000001-011000:
オペランド命令データアドレス
「 01」という値を ACC に格納するACC の内容を出力バッファ (OBUF) に出力するACC の内容を論理 左回転し, ACC に入れる常に 02 番地へ戻るアセンブリ言語によるプログラム
機械語によるプログラム
27
アセンブル方法 (1/4)
p.30 , A.2 命令セットを参照「 LD ACC,01h」のアセンブル
Rsm 0 1 0 0 A 1 s m × Rotate sm
LD 0 1 1 0 A B ○ LoaD
ST 0 1 1 1 A B ◎ STore
SBC 1 0 0 0 A B ○ SuB with Carry
10000000-1000110
A BA = 0:ACC
A = 1:IX
B = 000:ACC
B = 001:IX
B = 01-:即値B = 100: 直接 (P)
B = 101: 直接 (D)
B = 110: 修飾 (P)
B = 111: 修飾 (D)
28
アセンブル方法 (2/4)
p.30 , A.2 命令セットを参照「 OUT」のアセンブル
0 1 0 1 - - - - ×
OUT 0 0 0 1 0 - - - × OUTput
IN 0 0 0 1 1 - - - × INput
RCF 0 0 1 0 0 - - - × Reset CF
---01000
29
アセンブル方法 (3/4)
p.30 , A.2 命令セットを参照「 RLL ACC」のアセンブル
Rsm 0 1 0 0 A 1 s m × Rotate sm
LD 0 1 1 0 A B ○ LoaD
ST 0 1 1 1 A B ◎ STore
SBC 1 0 0 0 A B ○ SuB with Carry
11100010
A sA = 0:ACC
A = 1:IX
m
RA 0 0 Right Arithmetically
LA 0 1 Left Arithmetically
RL 1 0 Right Logically
LL 1 1 Left Logically
30
アセンブル方法 (4/4)
p.30 , A.2 命令セットを参照「 BA 02h」のアセンブル
RCF 0 0 1 0 0 - - - × Reset CF
SCF 0 0 1 0 1 - - - × Set CF
Bcc 0 0 1 1 c c ◎ Branch cc
Ssm 0 1 0 0 A 0 s m × Shift sm
00001100
cc
01000000
A 0 0 0 0 Always
VF 1 0 0 0 on oVerFlow
NZ 0 0 0 1 on Not Zero
Z 1 0 0 1 on Zero
31
プログラム例 (p.24 ,リスト 2)
02hBA001000000000001104:
ACCRLL0111010003:
OUT0---000102:
ACC, 01hLD00010000001-011000:
オペランド命令データアドレス
「 -」は 0 か 1 で置き換 える ( どちらでもよい )
32
プログラム例 (p.24 ,リスト 3)
02hBA001000000000001104:
ACCRLL0111010003:
OUT0000000102:
ACC, 01hLD000100000010011000:
オペランド命令データアドレス
アセンブル完了
04:
03:
02:
00:01:
05:
33
第 2.5節に沿って行う (p.22 ~ 26)
注意点:電源器とボードを接続してからコンセントに繋ぐことコンセントは机に固定されたものに繋ぐこと ( 転落防止 )電源スイッ チ横のコンデンサに指をかけないことプログラムの実行前に RESET を押すこと
全員確認できたら次の説明へ( 次回からグループではなく一人 1台で行う )
プログラムの実行
34
SS スイッ チで実行 さらに SS スイッ チを押すと停止,再開 CLKFRQ のダイヤルを回すと実行速度が変化
RESET SEL スイッ チを操作して ACC を表示 SI スイッ チでステップ実行 (1 命令ずつ )
SEL スイッ チを操作して PC を表示 SI スイッ チでステップ実行 (1 命令ずつ )
操作方法の補足
35
命令はどのように実行されるか ?
クロックに沿って実行 クロック 1周期分 → 1つの実行フェーズ
KUE-CHIP2 の各命令は 3から 5フェーズP0 , P1 :各命令で共通P2 以降:各命令で異なる
p.18 表 2 を参照
36
「 D1」を見たら「 80h」だと思う( 変数宣言,初期化のようなもの )メモリのプログラム領域 D1 番地の内容を ACC に格納する
実際に見てみる:リスト 1 (p.19)
アドレス データ ラベル 命令 オペランド
D1: EQU 80h
D2: EQU 81h
ANS: EQU 82h
00: 64 80 LD ACC,[D1]
02: B4 81 ADD ACC,[D2]
04: 74 82 ST ACC,[ANS]
06: 0F HLT
END
80: 03
81: FD
メモリのプログラム領域 D2 番地の内容と ACC の内容を加算するメモリのプログラム領域 ANS 番地にACC の内容を格納するプログラムの実行を停止するメモリ80 番地の内容を 03 とし,
メモリ81 番地の内容を FD とする
アセンブル結果の 16 進表示
37
実行のトレース
LD ACC,[D1]
P0 P1 P2 P3 P4
LD
ACC
IX(PC)→MAR
PC++(Mem)→IR
(A)→B
d(PC)→MAR
PC++
(Mem)→A
[d]
(d)(Mem)→MAR (Mem)→A
B の部分
A Bp.18 表 2 を参照
38
実行のトレース
00
00
00
000000
000: 64001: 80002: B4...080: 03081: FD
LD ACC,[D1]
39
実行のトレース
00
00
00
000000
000: 64001: 80002: B4...080: 03081: FD
LD ACC,[D1] P0: (PC)→MAR, PC++
01
40
00
実行のトレース
01
00
64
000000
000: 64001: 80002: B4...080: 03081: FD
LD ACC,[D1] P1: (Mem)→IR
41
02
実行のトレース
01
00
64
000000
000: 64001: 80002: B4...080: 03081: FD
LD ACC,[D1] P2: (PC)→MAR, PC++
01
42
80
02
実行のトレース
01
64
000000
000: 64001: 80002: B4...080: 03081: FD
LD ACC,[D1] P3: (Mem)→MAR
43
80
02
実行のトレース
64
000000
000: 64001: 80002: B4...080: 03081: FD
LD ACC,[D1] P4: (Mem)→A
03
45
実験課題 3.1 (p.26)
(1) について実行開始から実行終了まで,観測可能なレジスタ,バスをトレース
(2) ~ (6) についてADD開始前から ADD終了後まで,
フラグレジスタのみをトレースADD命令を ADC命令に変更して,ADC開始前から ADC終了後まで,フラグレジスタのみをトレースそれぞれの加算結果も確認・記録すること
46
実験課題 3.1 注意
リスト 1 を利用 16 進数「 64」, 2 進数では? 80 番地に値を入れるには,まずMAR を操作 毎回,まず計算結果を確認 ( 記録 ) すること 「6 」と「 b 」の読み間違いに注意 負の数は「 2 の補数表現」
0 0 0 0 0 0 1 13
1 1 1 1 1 1 0 1-3
1 0 0 0 0 0 0 0 0
+
47
検討事項のポイント
(1) について 各命令の各フェーズでの動作について
テキスト p.17 ~ 22 を参考に図などを使いながら文章で説明すること
レポート作成補助:図や資料のデータを配布中http://www.icd.cs.tut.ac.jp/~ravi/MP/index.html
(2) ~ (6) について 各フラグがどのような時に変化するのか,ADD 命令と ADC 命令の違いもまとめること
48
次回
実験課題 3.2 乗算プログラムの作成符号なし 2 バイト精度の 2 数の積 データを格納する番地はテキスト通りでなく
ても良い 演算結果は 2 バイトに収まると仮定
必須の予習:プログラムの作成とアセンブル
80h81h
82h83h
84h85h
×
49
1 0 1 0 1 0 1 10 0 0 0 0 0 1 1
0 0 1 0 0 1 0 10 0 0 0 0 0 0 0×
1 0 1 1 0 1 1 11 0 0 0 0 1 1 1
1 バイト = 8 ビット
MSB :最上位ビット ↓
LSB :最下位ビット↓
メモリ上での 順序に注意
補足:符号無し2バイトの乗算
50
補足:アドレスモード
オペランド ( 引数 ) の表現方法のこと
KUE-CHIP2 のアドレスモード (p.28 ~ 30 参照 )ACC,IX : ACC,IX の内容がデータ即値:オペランドそのものがデータ直接:オペランドがメモリのアドレス
そのアドレス上の内 容がデータ修飾:「オペランド+ IX の内容」が
メモリのアドレス そのアドレス上の内 容がデータ
51
補足:命令について (p.17)
ADD :加算命令。 CF を考慮しない。 ADC :加算命令。 CF を考慮する。 ( 減算も同様 )
RCF : CF をリセット する。
52
注意点
必ずプログラムを準備してくること! 次回からは各自 ( 一人一台 ) で実験を進める すぐに開始できるように ( 機械語プログラム )
まずはフローチャートを作成すること 授業開始時 ( 入力中 ) に問題がないか確認する
※プログラムとフローチャートは別の紙に
遅刻や準備不足に対する救済は行わない できなかった分は減点,最悪の場合は不受理
53
フローチャートの例
1 バイトの乗算
A
B
C
×
B を 1減らすB - 1 → B
C に A を足すC + A → C
初期化0 → C
終了HLT
終了判定B = 0 ?
Y
N
プログラムの流れを日本語で図示する
54
2 バイトの加算の例
0 → CFA2 + B2 + 0 →
C2A1 + B1 + CF →
C1
加算
終了HLT
A2A1
B2B1
C2C1
+RCF
LD ACC, [A2]ADC ACC, [B2]ST ACC, [C2]
LD ACC, [A1]ADC ACC, [B1]ST ACC, [C1]
HLT
CF
繰り上げ
55
プログラム作成時の注意点
000: 20 RCF
001: 64 80 LD ACC, [A2]003: 94 82 ADC ACC, [B2]005: 74 84 ST ACC, [C2]
007: 64 81 LD ACC, [A1]009: 94 83 ADC ACC, [B1]00B: 74 85 ST ACC, [C1]
00D: 08 HLT
他人が見て分かるように書くこと
紙の両面を使わない アセンブリ言語と
機械語は横に揃える 修正用のスペースも
用意しておく 機械語は 2 進・ 16 進の
どちらでも良いが,16 進数なら確認しやすい
必ず紙に手書き or 印刷してくること
56
よくある間違い
2 バイトのデータの取扱い上位・下位バイトの番地の誤り
初期化のし忘れSUM += A
繰り上げの失敗ADD 命令と ADC 命令、 CF のリセット
終了判定の誤りLD 0 では ZeroFlag は立たない
データの保存 (ST) のし忘れ アドレスが 16 進数ではなく 10 進数になっている
80h81h
82h83h
84h85h
×
57
マイクロプロセッサ(第 2 回)
58
第 2 回
実験課題 3.2 乗算プログラムの作成符号なし 2 バイト精度の 2 数の積 データを格納する番地はテキスト通りでなく
ても良い 演算結果は 2 バイトに収まると仮定
必須の予習:プログラムの作成とアセンブル
59
よくある間違い ( 再確認 )
2 バイトのデータの取扱い上位・下位バイトの番地の誤り
初期化のし忘れSUM += A
繰り上げの失敗ADD 命令と ADC 命令、 CF のリセット
終了判定の誤りLD 0 では ZeroFlag は立たない
データの保存 (ST) のし忘れ アドレスが 16 進数ではなく 10 進数になっている 入力ミス,アセンブルの 誤り
80h81h
82h83h
84h85h
×
60
進め方
各自の作成したプログラムを入力 入力中にフローチャートをチェック
早く終わった人は他の人をサポートホワイトボードの (1) ~ (4) で動作確認それらが正しく計算できたら
(A) と (B) を計算.実行時間を計測ホワイトボードに実行時間とプログラムの メモリ消費量 ( 単位:バイト ) を記入 プログラム部分+データ格納部分
61
実行時間の理論 値
自分のプログラムについて実行時間の理論 値を求め,実測値と比較せよ手順 1) 実行時間を決めるパラメータを特定
各命令のフェーズ数 (p.17 表 2)1 フェーズ = 1 クロック周期クロック周波数 = 100 Hz
手順 2) 実行時間を求める計算式を導出手順 3) 式から (A),(B) の実行時間理論 値を算出手順 4) 理論 値と観測値の比較
62
検討事項のポイント
使用したプログラムのリストを 載せ,フローチャートを用いて説明せよ
他の人のプログラムと比較論点1:実行時間 ( 実測値で可 )論点2:プログラムのメモリ消費量
注意:他の人のプログラムは掲載不要だが, 簡単な説明は記述すること
63
次回 (p.25-26)
課題 3.3 オシロスコープ への文字の出力必須の予習:
プログラムの作成とアセンブル
課題 3.4(1) メロディーの出力予習:軽く目を通しておく ( 付録 B.1 も -p.30-31) ※電卓を持参すること
64
オシロスコープ への文字の出力
出力バッファに DA コンバータを付けて出力信号をオシロスコープ へ
DA コンバータ:ディジタル信号をアナログ信号に変換する回路
1101
DA コンバータ 13(0,1 の 4 桁の信号 ) (16段階の値 )
65
取り付ける DA コンバータの機能
出力バッファの 8 ビットの中の上位 4 ビットを x 座標下位 4 ビットを y 座標 とする
x 座標の取れる範囲は 0h ~ Fh y 座標の取れる範囲は 0h ~ Fh
66
オシロスコープ への出力
LD ACC, 6BhOUT
0 F0
F
6
B
67
オシロスコープ への出力
LD ACC, 6BhOUT
点を 1つずつ表示続けて表示すれば全てが同時に表示されるように見える
0 F0
F
6
B
68
注意点
1. 1つの点は「・」として表示され「■」として表示されないので注意
2. ずっと表示されるようにすること( 図形表示部分を無限ループさせ,停止させる時は
SSボタンを押す )
3. オシロスコープの 残像に注意 ( 表示点は「ジャンプ」ではなく「移動」する. そのため,一筆書きの図形になる )
4. 座標データを一箇所にまとめ,IX ( 修飾アドレス指定 ) を使うこと
69
修飾アドレス指定
00: LD IX, 00h02: LD ACC, [IX+80h] ← IX を 0 ~ 4 としてルー
プ04: ADD IX, 01h
…
80: 座標 181: 座標 282: 座標 383: 座標 484: 座標 5
70
余力がある場合
文字・図形を動かしてみる例:右から左
※まずは固定で 完成してから ( 任意の課題は加点対象 )
71
マイクロプロセッサ(第 3回)
72
第 3回
課題 3.3 オシロスコープ への文字の出力必須の予習:
プログラムの作成とアセンブル
課題 3.4(1) メロディーの出力予習:軽く目を通しておく ( 付録 B.1 も p.30-31) ※電卓を持参すること
73
注意
使用する DA コンバータはとても壊れやすいので,大事に扱うこと ( むやみに触らない )
特に,取り付け部分周辺の配線に注意
取り付け&取り外しは教員・ TA が行います
74
進め方
15:40終了を目処にオシロスコープと DA コンバータを接続
チャンネル 1 → 赤 チャンネル 2 → 青 グランド → 黒
ダイヤル CLKFRQ を「 1」にして実行
15:40頃に次の説明
75
メロディーの出力
KUE-CHIP2 から波を出力しスピーカから 音を出す
今日:音を出す仕組みの基礎 次回:メロディー出力プログラムの実行
76
音とは
音は空気の振動 ( 波 )音の三要素
大きさ高さ音色
スピーカ:電気信号を音 ( 空気振動 ) に変換する装置
←波の振幅の大きさ←波の周波数の高さ←波の形
77
作る波
方形波:長方形の波
T = Ta + Tb
波の周期 T (秒 )
Ta (秒 )Tb (秒 )
On
Off
78
音を出すプログラム (p.31 リスト 4)
アドレス ラベル 命令 オペランド フェーズ数
00: L0: LD ACC, FFh 4
02: OUT 4
03: LD ACC, a 4
05: L1: SUB ACC, 01h 4
07: BNZ L1 4
09: LD ACC, 00h 4
0B: OUT 4
0C: LD ACC, b 4
0E: L2: SUB ACC, 01h 4
10:
12:
BNZ
BA
L2
L0
4
4
波の On 部を作る
波の Off 部を作る
自分で決める
79
作る波:長さ
方形波:長方形の波
Ta = (12+8a)T0 , Tb = (16+8b)T0
( ただし, T0 = クロック周期 )
波の周期 T (秒 )
Ta (秒 )Tb (秒 )
On
Off
80
実験内容 3.4(1) p.26
(a) オシロスコープでクロック 周期を確認スイッ チ CLK を中立にダイヤル CLKFRQ の「 0 ~ 8」の周波数を測定信号はコネクタ JP3 より出力
(b) リスト 4 の a , b を設定出力する音の周波数: 440Hz 「ラ」最適な T0 , a , b を計算によって定める
T = Ta + Tb T = 1/440 ( 秒 ) Ta = (12+8a)T0 , Tb = (16+8b)T0
最も精度が高くなるT0 を選択
81
実験内容 3.4(1) p.26
(c) 440Hz の音の出力リスト 4 の入力CLKFRQ の設定DA コンバータを通してスピーカから出力
出力音が 440Hz (誤差±1%) であることを計算によって確認
82
検討事項のポイント
(3) オシロスコープによる 文字の出力 プログラムのリストを 載せて,
プログラムの特徴を説明修飾アドレス指定に ついてどうやって文字を描画したのか
83
検討事項のポイント
(4) メロディーの出力(a) 誤差±1% の確認 どのように最適な T0, a, b を計算したか?
計算過程を記述すること どのように確認を行ったか?
実際に誤差を計算すること 他の精度確認方法は考えられるか
84
検討事項のポイント
(4) メロディーの出力(b) 精度をより上げるための対策 KUE-CHIP2だけで対処する 場合
( ソフトウェア上,プログラム上の工夫 )その他の機器を KUE-CHIP2 に接続する場合
( ハードウェア上の工夫 )
※メロディー出力の基本的なアルゴリズムはそのまま 出力周波数を 440Hz に近づける方法
85
次回
課題 3.4(2) メロディーの出力簡単なメロディーを出力させる 必須の予習: プログラムの作成とアセンブル 参考:付録 B.2 とリスト 5 (p.32)
※楽譜データを用意するだけではダメ リスト 5のプログラムに改造が必要
時間内に完成しなかった場合は打ち切り デバッグのサポートはできるが, プログラムが無い場合はサポートできない
86
注意
メロディーの出力は無限に繰り返すこと p.32 表 4「音階の周波数」を参考に
1オクターブ高い音 → 周波数が 2倍「休符」はどうすれば実現できるか
→ 音符と休符を判別し,別処理が必 要同じ音が続くと 1つの長い音に聞こえる
→ 音と音の間に空白が必要
※最も高周波・低周波な音でも可聴領域を超えない
リスト 5に改造が必要な部分
87
メロディー出力プログラム例 ( リスト 5)
000: 62 00 LD ACC, dptr1002: 75 1A ST ACC, (dptr)
004: 65 1A L0: LD ACC, (dptr)006: 68 LD IX, ACC007: B2 03 ADD ACC, 0x3009: 75 1A ST ACC, (dptr)
00B: A2 18 SUB ACC, dptr200D: 31 13 BNZ L100F: 62 00 LD ACC, dptr1011: 75 1A ST ACC, (dptr)
013: 67 02 L1: LD ACC, (IX+2)015: 75 1C ST ACC, (n3)
プログラム領域
音の先頭
音の終わり
どの音を鳴らすか (3ずつ増える )
データ領域のアドレスを指している( 自分のプログラムに合わせて設定 )
実行時に使用
100: n1 n2 n3 dptr1: ド103: n1 n2 n3 レ106: n1 n2 n3 ミ109: n1 n2 n3 ファ10C: n1 n2 n3 ソ10F: n1 n2 n3 ラ112: n1 n2 n3 シ115: n1 n2 n3 ド118: dptr2: ( 未使用 )
119: 00 または ff image11A: ?? dptr11B: ?? n211C: ?? n3
データ領域
n1 は音の高さ, n2 n3 は長さ (2重ループ )
出力
88
マイクロプロセッサ(第 4 回)
89
第4回
3.4(2) メロディーの出力簡単なメロディーを出力させる 必須の予習:
プログラムの作成とアセンブル 参考:付録 B.2 とリスト 5 (p.32)
DA コンバータの取扱いに注意
90
検討事項のポイント
(4)(c) 各自のデータ表現の特徴 プログラムのリストを 載せて説明せよ
例えば,「楽譜」は人間に理解しやすいように メロディーを表現している
どのような表現なら理解しやすいのか
91
検討事項のポイント
(4)(d) 作成したメロディー出力法は 他の CPU にも流用できるか?
他の CPU の例を 1つ挙げて考察挙げた CPU の実行命令フェーズを調べ,それを踏まえて考察
92
検討事項のポイント
(5) 自分が最も使用している CPU ( または,有名な CPU) について そのアーキテク チャを調べてまとめる ( 必須ではない )
レジスタ,命令セット,メモリ 空間の特徴乗算命令がどのように実行されているか
※任意の課題は加点対象
93
まとめ
計算機の仕組みについて理解例えば,なぜ 32bit の OS では 4G 以上のメモリが使 えないのか?
プログラムの作り方やデバッグの練習
高級言語によるプログラム
機械語によるプログラム
アセンブリ言語によるプログラム
コンパイ
ラ
アセンブ
ラ
4G = 4×1024×1024×1024 = 22×210×210×210 = 232
94
実験報告書について 指導書 p.5 をよく読むこと 受け取りは、メールにて行う。 宛先は
[email protected] 表紙は自作のものでも構わない 実験方法について,指導書を丸写しする必要はない この資料の「検討事項のポイント」を参考に 指導書の課題・検討事項の番号に沿ってまとめること 必ず自己点検票をチェック ( 提出は不要 ) 提出〆切は 1 週間後の 12:30 ( 時間厳守 )
病気等の例外を除き,〆切の延長はしない 受理されたもの への改善・修正は可 ( 一週間以内 ) 未完成のもの ( 途中までしかないもの ) は不受理