計算機基礎 Ⅱ,Ⅲ (指導書 pp. 76 ~ 94 )

53
計計計計計,計計計 pp. 76 94 1 計計計計 計計 計計 計計 計計計 (: )

description

計算機基礎 Ⅱ,Ⅲ (指導書 pp. 76 ~ 94 ). 改訂: 佐竹 純二 (作成:岡本 吉央). コンピュータ:機械から見ると. 論理回路. コンピュータ. コンピュータ:人間から見ると. ユーザ. 入力. どのような仕組みで動いているのか ?. 出力. コンピュータ. コンピュータ・ハードウェア. 記憶装置. 入力装置. 処理装置. 出力装置. コンピュータ・ソフトウェア. 記憶装置. 入力装置. アプリケーションプログラム. システムプログラム. 処理装置. 出力装置. 疑問. - PowerPoint PPT Presentation

Transcript of 計算機基礎 Ⅱ,Ⅲ (指導書 pp. 76 ~ 94 )

Page 1: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

計算機基礎Ⅱ ,Ⅲ (指導書 pp. 76 ~ 94 )

1

改訂:佐竹 純二(作成:岡本 吉央)

Page 2: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

コンピュータ:機械から見ると

2

コンピュータ

論理回路

Page 3: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

コンピュータ:人間から見ると

3

ユーザ

コンピュータ

入力

出力

どのような仕組みで動いているのか ?

Page 4: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

コンピュータ・ハードウェア

4

入力装置

出力装置

記憶装置

処理装置

Page 5: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

コンピュータ・ソフトウェア

5

入力装置

出力装置

記憶装置

処理装置

アプリケー

ションプログラ

システムプログラム

Page 6: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

疑問

処理装置 (CPU) はプログラム (≒ ソフトウェア ) をどのように解釈しているのか ?

6

高級言語によるプログラム

機械語によるプログラム

Page 7: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

( 今のところの ) 回答

コンパイラ,アセンブラと呼ばれるプログラムを変換するプログラムを使う

7

高級言語によるプログラム

機械語によるプログラム

アセンブリ言語によるプログラム

コンパイ

アセンブ

Page 8: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

ことばの整理:機械語

CPU が直接理解し実行できる言語のこと

プログラムは 0 と 1 の列から構成される

CPU ごとに異なる

8

高級言語によるプログラム

機械語によるプログラム

アセンブリ言語によるプログラム

コンパイ

アセンブ

Page 9: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

ことばの整理:高級言語

人間が使いやすいプログラミング言語C , C++ , Java , Perl などCPU ごとに異ならない

9

高級言語によるプログラム

機械語によるプログラム

アセンブリ言語によるプログラム

コンパイ

アセンブ

Page 10: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

ことばの整理:アセンブリ言語

機械語を人間にわかりやすくした言語命令が機械語と ( ほぼ ) 1 対 1 に対応CPU ごとに異なる

10

高級言語によるプログラム

機械語によるプログラム

アセンブリ言語によるプログラム

コンパイ

アセンブ

Page 11: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

ことばの整理:コンパイル

高級言語によるプログラムをアセンブリ言語によるプログラムに( または機械語によるプログラムに )

翻訳すること

11

高級言語によるプログラム

機械語によるプログラム

アセンブリ言語によるプログラム

コンパイ

アセンブ

Page 12: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

ことばの整理:アセンブル

アセンブリ言語によるプログラムを機械語によるプログラムに翻訳すること

12

高級言語によるプログラム

機械語によるプログラム

アセンブリ言語によるプログラム

コンパイ

アセンブ

Page 13: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

この実験の流れ

13

1. アセンブリ言語によるプログラミング2. 作成したプログラムのアセンブル ( 手作

業 )3. 実行 ( 動作の理解 )

機械語によるプログラム

アセンブリ言語によるプログラム

アセンブ

Page 14: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

この実験で用いるハードウェア

14

KUE-CHIP2教育用の 8 ビットマイクロプロセッサ

    ≒ CPU

8 ビット= 1 バイト0 0 0 1 0 0 1 1

13h ←16 進数であることを示す 他にも 13H , 0x13 など

Page 15: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

KUE-CHIP2 の構造 (p.77 ,図 1)

15

Page 16: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

KUE-CHIP2 の各部: ALU

演算ユニット (Arithmetic and Logic Unit) 算術演算,論理演算,アドレスの計算を行う

16

Page 17: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

KUE-CHIP2 の各部: ACC

アキュムレータ (accumulator) 演算に利用するレジスタ. 8 ビット 演算対象,演算結果を保持

17

Page 18: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

KUE-CHIP2 の各部: FLAG

18

フラグレジスタ (flag register) 演算・シフト結果により変化. 4 ビット

- - - - CF VF NF ZF

桁上がりフラグ

桁あふれフラグ負フラグ

ゼロフラグ

Page 19: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

KUE-CHIP2 の各部: PC

プログラムカウンタ (program counter) 次に実行する命令のメモリ上での

アドレスを保持. 8 ビット

19

Page 20: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

KUE-CHIP2 の各部:内部メモリ

20

512 バイト.バイト単位の番地指定 プログラム領域: 0 ~ 255 番地 データ領域: 256 番地~ 511 番地

プログラム領域

データ領域

000

0FF

1FF

100

011000100

255256

511

~~

Page 21: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

KUE-CHIP2 でのプログラミング

独自のアセンブリ言語で行う プログラムはメモリのプログラム領域に

置かれる ( プログラム内蔵方式 )

0 番地に置かれた命令から順番に実行される

21

Page 22: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

KUE-CHIP2 のアセンブリ言語

22

命令の種類: p.80 表 1 を参照 命令仕様: p.91 ~ 94 付録 A を参照

機械語フォーマット: 1 バイトか 2 バイト p.79 図 4 を参照

Page 23: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

0 0 0 0 0 0 0 1

0 0 0 0 0 0 1 0アセンブラ

プログラム例 (p.84 ,リスト 2)

23

02hBA001000000000001104:

ACCRLL0111010003:

OUT0---000102:

ACC, 01hLD00010000001-011000:

オペランド命令データアドレス

「 01 」という値を ACC に格納するACC の内容を出力バッファ (OBUF) に出力するACC の内容を論理左回転し, ACC に入れる常に 02 番地へ戻るアセンブリ言語によるプログラム

機械語によるプログラム

Page 24: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

アセンブルの方法 (1/4)

p.93 , A.2 命令セットを参照「 LD ACC,01h 」のアセンブル

24

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)

Page 25: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

アセンブルの方法 (2/4)

p.93 , A.2 命令セットを参照「 OUT 」のアセンブル

25

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

Page 26: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

アセンブルの方法 (3/4)

p.93 , A.2 命令セットを参照「 RLL ACC 」のアセンブル

26

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

Page 27: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

アセンブルの方法 (4/4)

p.93 , A.2 命令セットを参照「 BA 02h 」のアセンブル

27

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

Page 28: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

プログラム例 (p.84 ,リスト 2)

28

02hBA001000000000001104:

ACCRLL0111010003:

OUT0---000102:

ACC, 01hLD00010000001-011000:

オペランド命令データアドレス

「 - 」は 0 か 1 で置き換える ( どちらでもよい )

Page 29: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

プログラム例 (p.84 ,リスト 3)

29

02hBA001000000000001104:

ACCRLL0111010003:

OUT0000000102:

ACC, 01hLD000100000010011000:

オペランド命令データアドレス

アセンブル完了

04:

03:

02:

00:01:

05:

Page 30: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

プログラムの実行

第 2.5 節に沿って行う (p.82 ~ 86)

注意:実行前に RESET を押すこと

全員確認できたら次の説明へ( 次回はグループではなく 一人 1台ずつ行う )

30

Page 31: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

今日の実験内容

プログラムがどう実行されているか理解課題 1課題 2 ADD 命令課題 2 ADC 命令課題 3A課題 3B課題 4課題 5

次回:課題 6 ( 応用プログラミング )31

Page 32: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

各命令の動作 (p.79 , 2.4 節 )

1. Fetch :命令をメモリから 取ってくる2. Decode :取ってきた命令を解読する3. Execute :命令を実行する

32

Page 33: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

「 D1 」を見たら「 80h 」だと思う( 変数宣言,初期化のようなもの )メモリD1 番地の内容をACC に格納する

実際に見てみる:リスト 1 (p.81)

33

アドレス データ ラベル 命令 オペランド

D1: EQU 80h

00: 64 80 LD ACC,[D1]

02: A2 01 SUB ACC,1

04: 0F HLT

END

80: 01

ACC の内容から 1 を引く引いた結果は ACC に蓄えられるプログラムを 停止するプログラムの実行を 停止する80 番地の内容を 01 とするアセンブル結果の 16 進表示

Page 34: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

各命令実行前後の CPU の内部状態

指導書 p.81 表 2

34

命令の実行 PC ACC フラグ0000000

00000000

00000000

0

LD ADD,[D1]

00000010

00000001

00000000

SUB ACC,1

00000100

00000000

00000001

HLT

00000101

00000000

00000001

Page 35: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

今日の実験内容

課題の説明に従って,プログラムを実行し, CPU の内部状態を表にまとめる課題 1課題 2 ADD 命令課題 2 ADC 命令課題 3A ( プログラムを作成 )課題 3B ( プログラムを作成 )課題 4課題 5

35

Page 36: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

課題 3A :2バイトどうしの加算

36

1 0 0 1 0 0 0 00 0 0 0 0 1 0 0

1 0 0 0 0 0 1 00 0 0 0 1 0 0 0+

0 0 0 1 0 0 1 00 0 0 0 1 1 0 1

1 バイト = 8 ビット

1 番地0 番地

2 番地 3 番地

4 番地 5 番地

Page 37: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

課題 3B :2バイトどうしの減算

37

0 0 0 1 0 0 0 00 0 0 0 0 1 0 0

1 0 0 0 0 0 1 00 0 0 0 1 0 0 0-

1 0 0 0 1 1 1 01 1 1 1 1 0 1 1

1 バイト = 8 ビット

1 番地0 番地

2 番地 3 番地

4 番地 5 番地

Page 38: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

今日のまとめ

38

Page 39: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

2 の補数表現  ( 負の数の表現法 )

8 ビットで数を表現する場合

-45 は ?

実際足すと ?

39

0 0 1 0 1 1 0 145

1 1 0 1 0 0 1 1-45

1 0 0 0 0 0 0 0 0

-45 の 8 ビットにおける 2 の補数表現

Page 40: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

ADD 命令と ADC 命令の違い

ADD 命令:加算命令. CF を考慮しないADC 命令:加算命令. CF を考慮する

「 CF を考慮する」とは…演算結果によって, CF を変更するCF が 1 であるとき,加算結果に 1 を足す

実際の動作は「 CF を加算結果に足す」

40

Page 41: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

桁上げフラグと桁あふれフラグ

桁上げ (Carry) 桁あふれ (Overflow)次の計算のフラグ変化は ?

41

0 0 0 1 0 0 0 0

0 0 0 0 0 0 1 0+

0 0 0 1 0 0 1 0

CFVFNFZF

0000

Page 42: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

桁上げフラグと桁あふれフラグ

桁上げ (Carry) 桁あふれ (Overflow)次の計算のフラグ変化は ?

42

1 1 0 1 0 0 0 0

0 1 0 0 0 0 1 0+

0 0 0 1 0 0 1 0

CFVFNFZF

1000

1

Page 43: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

桁上げフラグと桁あふれフラグ

桁上げ (Carry) 桁あふれ (Overflow)次の計算のフラグ変化は ?

43

1 1 0 1 0 0 0 0

1 0 0 0 0 0 1 0+

0 1 0 1 0 0 1 0

CFVFNFZF

1100

1

Page 44: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

桁上げフラグと桁あふれフラグ

桁上げ (Carry) 桁あふれ (Overflow)次の計算のフラグ変化は ?

44

0 1 0 1 0 0 0 0

0 1 0 0 0 0 1 0+

1 0 0 1 0 0 1 0

CFVFNFZF

0110

Page 45: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

次回の内容

課題 6A :往復するフラッシ ャー課題 6B :積の計算

予習:必ずプログラムを作ってくること作ってこないと終わりませんグループではなく 一人ずつ行う

45

Page 46: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

積の計算

46

0 1 0 1 0 0 1 0

1 0 0 0 1 0 1 0×

0 0 1 1 0 1 0 00 1 0 0 0 1 0 0

1 バイト = 8 ビット

1 番地

0 番地

2 番地 3 番地

Page 47: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

フロー チャートの例

1 バイトの乗算

47

A

B

C

×

B を 1減らすB - 1 → B

C に A を足すC + A → C

初期化0 → C

終了HLT

終了判定B = 0 ?

Y

N繰り上がりも考えること

Page 48: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

計算機基礎Ⅲ

48

Page 49: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

今日の内容

課題 6A :往復するフラッシ ャー課題 6B :積の計算

終わった人から解散各人が 1つずつ行う

( グループで 1つではなく )各人は各課題ができたら確認を受けるこ

49

Page 50: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

課題 6B の確認

次の計算が正しくできることを見せる

50

9 7

2 A×

1 8 C 6

E 4

3 C×

3 5 7 0

Page 51: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

レポートについて

〆切:一週間以内 ( 次回の実験開始前 ) 厳守

提出場所: C2-503 ( 手渡し ) または C1-301

注意:完全なレポートを提出すること.複数人で相談してレポートを作成した場合は,その旨をレポート内で述べること.参考にした文献等も明記すること.

51

Page 52: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

結果の整理1について

各課題で用いたプログラムも 掲載するそのトレース結果を 掲載するトレース結果の各行に対して,

なぜそのような結果が得られるのかを述べる

それを踏まえて各命令の動作をまとめる

52

Page 53: 計算機基礎 Ⅱ,Ⅲ  (指導書  pp. 76 ~ 94 )

結果の整理1 の例

LD 命令は 2 バイト命令なので PC の値は 2だけ増加する.

データ領域 D1 番地の内容が 01h なので, LD命令を実行した結果 ACC の内容は 01h となる

LD 命令でフラグレジスタの値は変化しない

53

命令の実行 PC ACC フラグ0000000

00000000

00000000

0

LD ADD,(D1)

00000010

00000001

00000000