• Tidak ada hasil yang ditemukan

命令の種類+番地 - pweb

N/A
N/A
Protected

Academic year: 2024

Membagikan "命令の種類+番地 - pweb"

Copied!
53
0
0

Teks penuh

(1)

メモリ(主記憶装置)上に置く 実行の流れ: 以下を繰り返す

プログラムを一命令づつ読み出す

命令の実行

命令の形式: 命令の種類+番地

(2)

必要な構成要素:

主記憶装置

プログラムカウンタ(PC)

命令レジスタ(IR)

アキュムレータ(Acc)(汎用レジスタ)

フラグレジスタ(FR)

番地解読回路・命令解読回路

演算回路 (補助演算回路)

パルス発生器

(3)

主記憶からアキュムレータへの読出し (load)

アキュムレータから主記憶への書込み (store)

演算(add, subtract)

実行制御(jump, jump flag)

終了(stop)

これらを論理回路で実装すれば良い

(4)

説明用の簡易モデル:

1 word= 8 bit(= 1 byte)

−→ 一度に扱うデータの大きさ

−→ AccIR・演算回路の大きさ

命令部: 3 bit、番地部: 5 bit

? 命令: 二進3桁に符号化 load, store, add, subtract, jump, jump flag, stop.

? 番地: 0 番地から 31 番地まで

−→ 主記憶 32 bytePC 5 bit

(5)

Instruction Register

Accumulator 00001= 1

00010= 2 11111=31

Address Decoder 5bit 3bit

Instruction Decoder

add, subtract Arithmetic Unit

8FA add, subtract load,

store

Flag Register

stop, jump, jump flag

(6)

計算の実行 予め

主記憶にプログラム・データを

PCに実行開始番地(通常0番地)を それぞれ書き込んでおいて、

パルスを発生させると動作する。

プログラム・データ: bit(機械語)

(7)

命令 番号 符号化

stop 1 001

load 2 010

store 3 011

add 4 100

subtract 5 101

jump 6 110

jump flag 7 111

(8)

: 87 + 26 を計算する 機械語 番地 二進 十六進 0 00000 01000100 0x44 1 00001 10000101 0x85 2 00010 01100110 0x66 3 00011 00100000 0x20 4 00100 01010111 0x57 5 00101 00011010 0x1a 6 00110 00000000 0x00

(9)

番地 二進 十六進 言語 0 00000 01000100 0x44 load A 1 00001 10000101 0x85 add B 2 00010 01100110 0x66 store C 3 00011 00100000 0x20 stop 0 4 00100 01010111 0x57 A 87

5 00101 00011010 0x1a B 26 6 00110 00000000 0x00 C 0

(10)

: 87 + 26 を計算する

機械語 アセンブリ 番地 二進 十六進 言語 0 00000 01000100 0x44 load A 1 00001 10000101 0x85 add B 2 00010 01100110 0x66 store C 3 00011 00100000 0x20 stop 0 4 00100 01010111 0x57 A 87

5 00101 00011010 0x1a B 26 6 00110 00000000 0x00 C 0

(11)

アセンブラ(assembler):

アセンブリ言語で記述されたプログラムを 機械語に直すプログラム

−→ CPUのアーキテクチャによって

それぞれ異なる(互換性がない)

(12)

: 87 + 26 を計算する (実際の動作) 機械語 アセンブリ 番地 二進 言語 0 00000 01000100 load A 1 00001 10000101 add B 2 00010 01100110 store C 3 00011 00100000 stop 0 4 00100 01010111 A 87

5 00101 00011010 B 26 6 00110 00000000 C 0

PC: 00000 IR: --- Acc: ---

(13)

番地 二進 言語 0 00000 01000100 load A 1 00001 10000101 add B 2 00010 01100110 store C 3 00011 00100000 stop 0 4 00100 01010111 A 87

5 00101 00011010 B 26 6 00110 00000000 C 0

PC: 00001 IR: 01000100 Acc: ---

(14)

: 87 + 26 を計算する (実際の動作) 機械語 アセンブリ 番地 二進 言語 0 00000 01000100 load A 1 00001 10000101 add B 2 00010 01100110 store C 3 00011 00100000 stop 0 4 00100 01010111 A 87

5 00101 00011010 B 26 6 00110 00000000 C 0

PC: 00001 IR: 01000100 Acc: 01010111

(15)

番地 二進 言語 0 00000 01000100 load A 1 00001 10000101 add B 2 00010 01100110 store C 3 00011 00100000 stop 0 4 00100 01010111 A 87

5 00101 00011010 B 26 6 00110 00000000 C 0

PC: 00002 IR: 10000101 Acc: 01010111

(16)

: 87 + 26 を計算する (実際の動作) 機械語 アセンブリ 番地 二進 言語 0 00000 01000100 load A 1 00001 10000101 add B 2 00010 01100110 store C 3 00011 00100000 stop 0 4 00100 01010111 A 87

5 00101 00011010 B 26 6 00110 00000000 C 0

PC: 00002 IR: 10000101 Acc: 01110001

(17)

番地 二進 言語 0 00000 01000100 load A 1 00001 10000101 add B 2 00010 01100110 store C 3 00011 00100000 stop 0 4 00100 01010111 A 87

5 00101 00011010 B 26 6 00110 00000000 C 0

PC: 00003 IR: 01100110 Acc: 01110001

(18)

: 87 + 26 を計算する (実際の動作) 機械語 アセンブリ 番地 二進 言語 0 00000 01000100 load A 1 00001 10000101 add B 2 00010 01100110 store C 3 00011 00100000 stop 0 4 00100 01010111 A 87

5 00101 00011010 B 26 6 00110 01110001 C 113

PC: 00003 IR: 10000101 Acc: 01110001

(19)

番地 二進 言語 0 00000 01000100 load A 1 00001 10000101 add B 2 00010 01100110 store C 3 00011 00100000 stop 0 4 00100 01010111 A 87

5 00101 00011010 B 26 6 00110 01110001 C 113

PC: 00004 IR: 00100000 Acc: 01110001

(20)

: 87 + 26 を計算する (実際の動作) 機械語 アセンブリ 番地 二進 言語 0 00000 01000100 load A 1 00001 10000101 add B 2 00010 01100110 store C 3 00011 00100000 stop 0 4 00100 01010111 A 87

5 00101 00011010 B 26 6 00110 01110001 C 113

PC: 00000 IR: 00100000 Acc: 01110001

(21)

2 load B 3 store A

4 load C

5 store B

6 stop 0

7 A 15 8 B 5 9 C 0

Acc: ---

(22)

: AB とを入れ替える 0 load A

1 store C 2 load B 3 store A 4 load C 5 store B 6 stop 0 7 A 15

8 B 5 9 C 0

Acc: ---

(23)

2 load B 3 store A 4 load C 5 store B 6 stop 0 7 A 15

8 B 5 9 C 0

Acc: 00001111

(24)

: AB とを入れ替える 0 load A

1 store C 2 load B 3 store A 4 load C 5 store B 6 stop 0 7 A 15

8 B 5 9 C 15 Acc: 00001111

(25)

2 load B 3 store A 4 load C 5 store B 6 stop 0 7 A 15

8 B 5 9 C 15 Acc: 00000101

(26)

: AB とを入れ替える 0 load A

1 store C 2 load B 3 store A 4 load C 5 store B 6 stop 0 7 A 5

8 B 5 9 C 15 Acc: 00000101

(27)

2 load B 3 store A 4 load C 5 store B 6 stop 0 7 A 5

8 B 5 9 C 15 Acc: 00001111

(28)

: AB とを入れ替える 0 load A

1 store C 2 load B 3 store A 4 load C 5 store B 6 stop 0 7 A 5

8 B 15 9 C 15 Acc: 00001111

(29)

2 load B 3 store A 4 load C 5 store B 6 stop 0 7 A 5

8 B 15 9 C 15 Acc: 00001111

(30)

: C max{A, B}

0 load A

1 subtract B 2 jump flag M

3 load A

4 jump N

5 M load B

6 N store C

7 stop 0

8 A 5 9 B 7 10 C 0

PC: 00000= 0 Acc: ---= FR: -

(31)

2 jump flag M

3 load A

4 jump N

5 M load B

6 N store C

7 stop 0

8 A 5 9 B 7 10 C 0

PC: 00001= 1 Acc: 00000101= 5 FR: 0

(32)

: C max{A, B}

0 load A

1 subtract B 2 jump flag M

3 load A

4 jump N

5 M load B

6 N store C

7 stop 0

8 A 5 9 B 7 10 C 0

PC: 00002= 2 Acc: 11111110=- 2 FR: 1

(33)

2 jump flag M

3 load A

4 jump N

5 M load B

6 N store C

7 stop 0

8 A 5 9 B 7 10 C 0

PC: 00101= 5 Acc: 11111110=- 2 FR: 1

(34)

: C max{A, B}

0 load A

1 subtract B 2 jump flag M

3 load A

4 jump N

5 M load B

6 N store C

7 stop 0

8 A 5 9 B 7 10 C 0

PC: 00110= 6 Acc: 00000111= 7 FR: 0

(35)

2 jump flag M

3 load A

4 jump N

5 M load B

6 N store C

7 stop 0

8 A 5 9 B 7 10 C 7

PC: 00111= 7 Acc: 00000111= 7 FR: 0

(36)

: C max{A, B}

0 load A

1 subtract B 2 jump flag M

3 load A

4 jump N

5 M load B

6 N store C

7 stop 0

8 A 5 9 B 7 10 C 7

PC: 00000= 0 Acc: 00000111= 7 FR: 0

(37)

2 jump flag END

3 store B

4 load C

5 add A

6 store C

7 jump LOOP

8 END stop 0

9 A 15

10 B 3

11 C 0

12 D 1

(38)

: 15×3 を計算する

0 LOOP load B 01001010 4a

1 subtract D 10101100 ac

2 jump flag END 11101000 e8

3 store B 01101010 6a

4 load C 01001011 4b

5 add A 10001001 89

6 store C 01101011 6b

7 jump LOOP 11000000 c0

8 END stop 0 00100000 20

9 A 15 00001111 0f

10 B 3 00000101 05

11 C 0 00000000 00

12 D 1 00000001 01

(39)

4 load C

5 add A

6 store C

7 jump LOOP

8 END stop 0

9 A 15

10 B 3

11 C 0

12 D 1

PC: 00001= 1 Acc: 00000011= 3 FR: 0

(40)

0 LOOP load B

1 subtract D

2 jump flag END

3 store B

4 load C

5 add A

6 store C

7 jump LOOP

8 END stop 0

9 A 15

10 B 3

11 C 0

12 D 1

PC: 00010= 2 Acc: 00000010= 2 FR: 0

(41)

4 load C

5 add A

6 store C

7 jump LOOP

8 END stop 0

9 A 15

10 B 3

11 C 0

12 D 1

PC: 00011= 3 Acc: 00000010= 2 FR: 0

(42)

0 LOOP load B

1 subtract D

2 jump flag END

3 store B

4 load C

5 add A

6 store C

7 jump LOOP

8 END stop 0

9 A 15

10 B 2

11 C 0

12 D 1

PC: 00100= 4 Acc: 00000010= 2 FR: 0

(43)

4 load C

5 add A

6 store C

7 jump LOOP

8 END stop 0

9 A 15

10 B 2

11 C 0

12 D 1

PC: 00101= 5 Acc: 00000000= 0 FR: 0

(44)

0 LOOP load B

1 subtract D

2 jump flag END

3 store B

4 load C

5 add A

6 store C

7 jump LOOP

8 END stop 0

9 A 15

10 B 2

11 C 0

12 D 1

PC: 00110= 6 Acc: 00001111= 15 FR: 0

(45)

4 load C

5 add A

6 store C

7 jump LOOP

8 END stop 0

9 A 15

10 B 2

11 C 15

12 D 1

PC: 00111= 7 Acc: 00001111= 15 FR: 0

(46)

0 LOOP load B

1 subtract D

2 jump flag END

3 store B

4 load C

5 add A

6 store C

7 jump LOOP

8 END stop 0

9 A 15

10 B 2

11 C 15

12 D 1

PC: 00000= 0 Acc: 00001111= 15 FR: 0

(47)

4 load C

5 add A

6 store C

7 jump LOOP

8 END stop 0

9 A 15

10 B 2

11 C 15

12 D 1

PC: 00001= 1 Acc: 00000010= 2 FR: 0

(48)

中略

3 巡回ると

(49)

4 load C

5 add A

6 store C

7 jump LOOP

8 END stop 0

9 A 15

10 B 0

11 C 45

12 D 1

PC: 00001= 1 Acc: 00000000= 0 FR: 0

(50)

0 LOOP load B

1 subtract D

2 jump flag END

3 store B

4 load C

5 add A

6 store C

7 jump LOOP

8 END stop 0

9 A 15

10 B 0

11 C 45

12 D 1

PC: 00010= 2 Acc: 11111111=- 1 FR: 1

(51)

4 load C

5 add A

6 store C

7 jump LOOP

8 END stop 0

9 A 15

10 B 0

11 C 45

12 D 1

PC: 01000= 8 Acc: 11111111=- 1 FR: 1

(52)

0 LOOP load B

1 subtract D

2 jump flag END

3 store B

4 load C

5 add A

6 store C

7 jump LOOP

8 END stop 0

9 A 15

10 B 0

11 C 45

12 D 1

PC: 00000= 0 Acc: 11111111=- 1 FR: 1

(53)

自然数 n に対して、

1 から n までの和を計算する プログラムを作成せよ。

実行前(入力): ラベル A の場所に 数値 n が書き込まれている

実行後(出力): ラベル C の場所に 計算結果の数値が書き込まれている

Referensi

Dokumen terkait

手続き抽象化機能をもつプログラミング言語による 3D 印刷 金田 泰1,a 概要:機械加工や3D印刷をコンピュータを使用しておこなうとき,工作機械や3Dプリンタを手続き的 に制御するためのプログラムが必要になる.この目的のためにひろく使用されているのがGコードであ る.Gコードはもともと切削加工の制御のために開発され,当初は設計者がそれによるプログラムを記述

1 / 9 22 第 3 回阪大本番レベル模試 生物 採点基準 【統一事項】 1.設問文の指示について ・設問文の指示に従っていない場合には適宜減点する。 2.空欄補充・用語記述問題 ・生物学用語について誤字・脱字がある場合→×0点 ・教科書で一般に漢字表記の用語をひらがなで書いてある場合→○できれば赤で訂正 ・不要な要素を含んで解答した場合→×0点

2/2 第 1 回 2月センター試験本番レベル模試[物理基礎]講評 第 3 問 物体の運動とエネルギー(15 点) 重ねられた 2 物体では,それぞれにはたら く力を正しく求めることが重要。 第 3 問は,「物体の運動とエネルギー」に関する 出題であった。Aは a-t グラフ,x-t グラフにつ いて,Bは重ねられた 2 物体の運動について,それ

1 本研究は,接触場面における三者会話の話題転換がどのように行われるのか,そこにはどのような 特徴があるのかを明らかにすることを目的として行った。そこで,三者による雑談会話データを集め, 分析を行った。各データにおける話題開始者,話題終了者,話題参加者をそれぞれ集計し,非母語

計算の理論 或る問題の「計算が可能」 m その計算を行なうプログラムが存在 ⇓ 計算機の機能 =「計算」のモデル を決めて議論 −→ 代表的な「計算のモデル」を幾つか紹介... 演習問題 ちょっとしたコツtips: 「後に続く文字列が何だったら受理か」 が全く同じ状態は一つの状態にまとめられる。 これが違う状態はまとめられない。

広島東洋カープの年俸決定要因分析 上智大学経済学部経済学科4年 A1241935 嶋津遼太郎 1.はじめに 近代日本においてプロスポーツはごく一 般的なものとなり、娯楽としても根付いて きたと思われる。各社新聞紙面にはスポー ツ欄が常設され、テレビ番組にも多くのス ポーツを特集した番組が毎日放送されてい る。その中でも日本における最大規模のプ

プログラム内蔵方式von Neumann型 プログラム・データを共にメモリ上に置く −→ 主記憶装置 実行の流れ: 以下を繰り返す • プログラムを一命令づつ読み出す • 命令の実行 次にどの命令を読み出すか −→ プログラムカウンタ... プログラムカウンタ 次に読み出す命令の番地addressを 保持する一時記憶場所register •

日本におけるセルフヘルフ ーそこにみられる相互扶助の伝統と自立=解放運動の流れをめぐって− 岡 知 史 は じ め −こ 欧米のセルフヘルプには二つの思想が,その要素として根底にあると指摘されている(1).ひと つは,自助(self−help)であって,もうひとつほ,相互扶助(mutualaid)である.それぞれ,