Download presentation
Presentation is loading. Please wait.
1
計算機基礎Ⅱ,Ⅲ (指導書 pp. 76~94) 改訂:佐竹 純二 (作成:岡本 吉央)
2
コンピュータ:機械から見ると 論理回路 コンピュータ
3
コンピュータ:人間から見ると ユーザ 入力 どのような仕組みで動いているのか? 出力 コンピュータ
4
コンピュータ・ハードウェア 記憶装置 入力装置 処理装置 出力装置
5
コンピュータ・ソフトウェア 記憶装置 入力装置 アプリケーションプログラム システムプログラム 処理装置 出力装置
6
疑問 処理装置 (CPU) はプログラム(≒ソフトウェア)を どのように解釈しているのか? 高級言語による プログラム 機械語による
7
(今のところの) 回答 コンパイラ,アセンブラと呼ばれる プログラムを変換するプログラムを使う コンパイラ アセンブラ 高級言語による
機械語による プログラム アセンブリ言語に よるプログラム
8
ことばの整理:機械語 CPUが直接理解し実行できる言語のこと プログラムは0と1の列から構成される CPUごとに異なる 高級言語による
機械語による アセンブリ言語に よるプログラム コンパイラ アセンブラ
9
ことばの整理:高級言語 人間が使いやすいプログラミング言語 C,C++,Java,Perlなど CPUごとに異ならない 高級言語による
プログラム 機械語による アセンブリ言語に よるプログラム コンパイラ アセンブラ
10
ことばの整理:アセンブリ言語 機械語を人間にわかりやすくした言語 命令が機械語と (ほぼ) 1 対 1 に対応 CPUごとに異なる
高級言語による プログラム 機械語による アセンブリ言語に よるプログラム コンパイラ アセンブラ
11
ことばの整理:コンパイル 高級言語によるプログラムを アセンブリ言語によるプログラムに (または機械語によるプログラムに) 翻訳すること
コンパイラ アセンブラ
12
ことばの整理:アセンブル アセンブリ言語によるプログラムを 機械語によるプログラムに 翻訳すること 高級言語による プログラム 機械語による
コンパイラ アセンブラ
13
この実験の流れ 1. アセンブリ言語によるプログラミング 2. 作成したプログラムのアセンブル(手作業) 3. 実行(動作の理解)
アセンブラ 機械語による プログラム アセンブリ言語に よるプログラム
14
この実験で用いるハードウェア KUE-CHIP2 教育用の8ビットマイクロプロセッサ ≒ CPU 8ビット=1バイト
1 13h ←16進数であることを示す 他にも13H,0x13など
15
KUE-CHIP2の構造 (p.77,図1)
16
KUE-CHIP2の各部:ALU 演算ユニット(Arithmetic and Logic Unit)
算術演算,論理演算,アドレスの計算を行う
17
KUE-CHIP2の各部:ACC アキュムレータ (accumulator) 演算に利用するレジスタ.8ビット 演算対象,演算結果を保持
18
KUE-CHIP2の各部:FLAG フラグレジスタ (flag register) 演算・シフト結果により変化.4ビット 桁上がりフラグ
- CF VF NF ZF 桁上がりフラグ 桁あふれフラグ 負フラグ ゼロフラグ
19
KUE-CHIP2の各部:PC プログラムカウンタ (program counter)
次に実行する命令のメモリ上での アドレスを保持.8ビット
20
KUE-CHIP2の各部:内部メモリ 512バイト.バイト単位の番地指定 プログラム領域:0~255番地 データ領域:256番地~511番地
1FF データ 領域 ~ 256 100 255 0FF プログラム 領域 ~ 000
21
KUE-CHIP2でのプログラミング 独自のアセンブリ言語で行う プログラムはメモリのプログラム領域に 置かれる (プログラム内蔵方式)
0番地に置かれた命令から順番に実行される
22
KUE-CHIP2のアセンブリ言語 命令の種類:p.80 表1を参照 命令仕様: p.91~94 付録A を参照
機械語フォーマット:1バイトか2バイト p.79 図4を参照
23
プログラム例 (p.84,リスト2) ACCの内容を論理左回転し,ACCに入れる 常に02番地へ戻る
アドレス データ 命令 オペランド 00: 0110 001- 0000 0001 LD ACC, 01h 02: 0001 0--- OUT 03: 0100 0111 RLL ACC 04: 0011 0000 0000 0010 BA 02h ACCの内容を論理左回転し,ACCに入れる 常に02番地へ戻る ACCの内容を出力バッファ(OBUF)に出力する 「01」という値をACCに格納する 機械語による プログラム アセンブリ言語による プログラム アセンブラ
24
アセンブルの方法 (1/4) p.93,A.2 命令セットを参照 「LD ACC,01h」のアセンブル 1 1 1 - 1 A B
1 1 1 - 1 A B B = 000:ACC B = 001:IX B = 01-:即値 B = 100:直接 (P) B = 101:直接 (D) B = 110:修飾 (P) B = 111:修飾 (D) Rsm 1 A s m × Rotate sm LD B ○ LoaD ST ◎ STore SBC SuB with Carry A = 0:ACC A = 1:IX
25
アセンブルの方法 (2/4) p.93,A.2 命令セットを参照 「OUT」のアセンブル 1 - - - 1 - × OUT OUTput
1 - - - 1 - × OUT OUTput IN INput RCF Reset CF
26
アセンブルの方法 (3/4) p.93,A.2 命令セットを参照 「RLL ACC」のアセンブル 1 1 1 1 A s m Rsm 1 A
1 1 1 1 A s m Rsm 1 A s m × Rotate sm LD B ○ LoaD ST ◎ STore SBC SuB with Carry A = 0:ACC A = 1:IX RA Right Arithmetically LA 1 Left Arithmetically RL Right Logically LL Left Logically
27
アセンブルの方法 (4/4) p.93,A.2 命令セットを参照 「BA 02h」のアセンブル 1 1 1 c c RCF 1 - ×
1 1 1 c c RCF 1 - × Reset CF SCF Set CF Bcc c ◎ Branch cc Ssm A s m Shift sm A Always VF 1 on oVerFlow NZ on Not Zero Z on Zero
28
プログラム例 (p.84,リスト2) 「-」は0か1で置き換える (どちらでもよい) 02h BA 0010 0000 0011 04:
ACC RLL 0111 0100 03: OUT 0--- 0001 02: ACC, 01h LD 001- 0110 00: オペランド 命令 データ アドレス 「-」は0か1で置き換える (どちらでもよい)
29
プログラム例 (p.84,リスト3) アセンブル完了 02h BA 0010 0000 0011 04: ACC RLL 0111 0100
03: OUT 0001 02: ACC, 01h LD 0110 00: オペランド 命令 データ アドレス 04: 03: 02: 00: 01: 05: アセンブル完了
30
プログラムの実行 第2.5節に沿って行う (p.82~86) 注意: 実行前にRESETを押すこと 全員確認できたら次の説明へ
(次回はグループではなく一人1台ずつ行う)
31
今日の実験内容 プログラムがどう実行されているか理解 次回:課題6 (応用プログラミング) 課題1 課題2 ADD命令 課題2 ADC命令
課題3B 課題4 課題5 次回:課題6 (応用プログラミング)
32
各命令の動作 (p.79,2.4節) Fetch:命令をメモリから取ってくる Decode:取ってきた命令を解読する
Execute:命令を実行する
33
実際に見てみる:リスト1 (p.81) プログラムの実行を停止する 80番地の内容を01とする プログラムを停止する
アドレス データ ラベル 命令 オペランド D1: EQU 80h 00: 64 80 LD ACC,[D1] 02: A2 01 SUB ACC,1 04: 0F HLT END 80: プログラムの実行を停止する 80番地の内容を01とする プログラムを停止する アセンブル結果の16進表示 ACCの内容から1を引く 引いた結果はACCに蓄えられる メモリD1番地の内容を ACCに格納する 「D1」を見たら「80h」だと思う (変数宣言,初期化のようなもの)
34
各命令実行前後のCPUの内部状態 命令の実行 PC ACC フラグ 00000000 LD ADD,[D1] 00000010
SUB ACC,1 HLT 指導書 p.81 表2
35
今日の実験内容 課題の説明に従って,プログラムを実行し,CPUの内部状態を表にまとめる 課題1 課題2 ADD命令 課題2 ADC命令
課題3B (プログラムを作成) 課題4 課題5
36
課題3A:2バイトどうしの加算 0番地 1番地 1 1 + 1 1 2番地 3番地 1 1 4番地 5番地 1バイト = 8ビット
37
課題3B:2バイトどうしの減算 0番地 1番地 1 1 - 1 1 2番地 3番地 1 1 4番地 5番地 1バイト = 8ビット
38
今日のまとめ
39
2の補数表現 (負の数の表現法) 8ビットで数を表現する場合 -45は? 実際足すと? 1 1 45 1
2の補数表現 (負の数の表現法) 8ビットで数を表現する場合 -45は? 実際足すと? 45 1 -45の8ビットにおける2の補数表現 -45 1 1
40
ADD命令とADC命令の違い ADD命令:加算命令.CFを考慮しない ADC命令:加算命令.CFを考慮する 「CFを考慮する」とは…
41
桁上げフラグと桁あふれフラグ 桁上げ (Carry) 桁あふれ (Overflow) 次の計算のフラグ変化は? 1 + 1 CF VF NF
1 + 1 CF VF NF ZF 0 0 1
42
桁上げフラグと桁あふれフラグ 桁上げ (Carry) 桁あふれ (Overflow) 次の計算のフラグ変化は? 1 + 1 CF VF NF
+ 1 CF VF NF ZF 1 0 1 1
43
桁上げフラグと桁あふれフラグ 桁上げ (Carry) 桁あふれ (Overflow) 次の計算のフラグ変化は? 1 + 1 CF VF NF
+ 1 CF VF NF ZF 1 1 1 1
44
桁上げフラグと桁あふれフラグ 桁上げ (Carry) 桁あふれ (Overflow) 次の計算のフラグ変化は? 1 + 1 CF VF NF
1 + 1 CF VF NF ZF 0 1 1 1
45
次回の内容 課題6A:往復するフラッシャー 課題6B:積の計算 予習:必ずプログラムを作ってくること 作ってこないと終わりません
グループではなく一人ずつ行う
46
積の計算 0番地 1 × 1 1番地 1 1 2番地 3番地 1バイト = 8ビット
47
フローチャートの例 1バイトの乗算 繰り上がりも 考えること 初期化 0 → C × 終了判定 Y 終了 HLT B = 0 ? N
A × B 終了判定 Y 終了 HLT C B = 0 ? N 繰り上がりも 考えること CにAを足す C + A → C Bを1減らす B - 1 → B
48
計算機基礎Ⅲ
49
今日の内容 課題6A:往復するフラッシャー 課題6B:積の計算 終わった人から解散 各人が1つずつ行う (グループで1つではなく)
各人は各課題ができたら確認を受けること
50
課題6Bの確認 次の計算が正しくできることを見せる 9 7 E 4 × × 2 A 3 C 1 8 C 6 3 5 7
51
レポートについて 〆切:一週間以内 (次回の実験開始前) 厳守 提出場所:C2-503 (手渡し) または C1-301
注意: 完全なレポートを提出すること. 複数人で相談してレポートを作成した場合は,その旨をレポート内で述べること. 参考にした文献等も明記すること.
52
結果の整理1について 各課題で用いたプログラムも掲載する そのトレース結果を掲載する
トレース結果の各行に対して, なぜそのような結果が得られるのかを 述べる それを踏まえて各命令の動作をまとめる
53
結果の整理1 の例 命令の実行 PC ACC フラグ 00000000 LD ADD,(D1) 00000010 00000001
LD命令は2バイト命令なのでPCの値は2だけ増加する. データ領域D1番地の内容が01hなので,LD命令を実行した結果ACCの内容は01hとなる LD命令でフラグレジスタの値は変化しない
Similar presentations
© 2024 slidesplayer.net Inc.
All rights reserved.