計算機組成與系統結構課程設計

一、本課程設計的性質、目的、任務 

《計算機組成與系統結構課程設計》是計算機學院各專業集中實踐性環節之一,是學習完《計算機組成與系統結構》課程後進行的一次全面的綜合練習。其目的是綜合運用所學計算機原理知識,設計並實現一臺模型計算機,以便鞏固所學的知識,提高分析問題和解決問題的能力。

 

二、本課程設計的基本理論

1、掌握算術、邏輯、移位運算實驗,熟悉ALU運算控制位的運用。

2、掌握存儲器組織、讀寫方式及與總路線組成的數據通路,掌握地址總線、數據總線的工作原理。

3、掌握指令結構和指令取指、執行工作過程。

4、掌握CPU的微程序控制原理。

 

三、題目

1、綜合運用所學計算機原理知識,設計並實現具有以下指令集結構的模型計算機:

 

編號

助記符

機器指令碼

說明

1

IN Rd,IOL

0001Rd00

i/o(數據開關)低字節→rs  

2

OUT  IOH,Rs

001000Rs

Rs→i/o(數據開關)高字節

3

LDA  Rd,M

0011Rd00   XXXXXXXX   XXXXXXXX

[M] →RD

4

STA  M,Rs

010000Rs   XXXXXXXX   XXXXXXXX

Rs→[M]

5

ADD  Rd,Rs

0101RdRs  

Rd+Rs→Rd

6

SUB  Rd,Rs

0110RdRs  

Rd-Rs→Rd

7

RL  Rd

0111Rd00   

Rd循環左移一位

8

RR  Rd

1000Rd00

Rd循環右移一位

9

MOV Rd,Rs  

1001RdRs

Rs→Rd

10

JMP M

10100000  XXXXXXXX   XXXXXXXX

[M]→PC,即跳轉到M所指單元

11

JZ M

10110000  XXXXXXXX   XXXXXXXX

當Z=1時,跳轉到M所指單元

12

JC M

11000000  XXXXXXXX   XXXXXXXX

當CY=1時,跳轉到M所指單元

13

CLR Rd

1101Rd00

將Rd清零

14

DEC Rd

1110Rd00

將Rd值減1

15

HALT

11110000

停機

其中,高4位爲指令操作碼,M16位存儲器地址, Rs爲源寄存器,Rd爲目的寄存器,2位,並規定:

RsRd

選定的寄存器

00

01

10

11

R0

R1

R2

R3

 

2、利用上述指令集編寫彙編程序,並在所設計的模型計算機上調試通過:

用累加的方法實現字節乘法(不溢出情況),被乘數:R0,乘數:R1,積:R2並輸出至I/O

 

 

四、數據格式及指令系統

1.數據格式
模型機規定採用定點補碼錶示數據,且字長爲8位,其格式如下

7

6 5 4 3 2 1 0

符號

尾  數

2.指令格式
  模型機設計四大類指令共  條,其中包括算術邏輯指令、I/O指令、訪問及轉移指令和停機指令。

⑴ 算術邏輯指令

設計算術邏輯指令並用單字節表示,尋址方式採用寄存器直接尋址,其格式如下:

7 6 5 4

3 2

1 0

OP-CODE

Rd

Rs

其中,OP-CODE爲操作碼,Rs爲源寄存器,Rd爲目的寄存器,並規定:

RsRd

選定的寄存器

00

01

10

11

R0

R1

R2

R3

⑵ 訪問指令及轉移指令

模型機設計2條訪問指令,即存數(STA)、取數(LDA),2條轉移指令,即無條件轉移(JMP)、結果爲零轉移(JZ)、有進位轉移指令(JC),指令格式爲:

7 6 5 4

3 2

1 0

OP-CODE

Rd

Rs

D(低八)

D(高八)

⑶ I/O指令

輸入(IN)和輸出(OUT)指令採用單字節指令,其格式如下:

IN:

7 6 5 4

3 2

1 0

OP-CODE

Rd

0 0

OUT:

7 6 5 4

3 2

1 0

OP-CODE

0 0

Rs

 

⑷ 停機指令

指令格式如下:

7 6 5 4

3 2

1 0

OP-CODE

0 0

0 0

HALT指令,用於實現停機操作。

1. 目標寄存器的尋址控制

1) OP=0R/M=1時,將IR3IR2作爲目標寄存器地址;

2.  源寄存器的尋址控制

1) XP=1時,將IR1IR0作爲源寄存器地址。

 

助記符

指令格式

功 能

LDA Rd,M

0

0

1

1

Rd

00

[M]→RD

STA M,Rs

0

1

0

0

00

Rs

Rs→[M]

JMP M

1

0

1

0

00

00

[M]→PC

JZ M

1

0

1

1

00

00

Z=1時,[M]→PC

JC M

1

1

0

0

00

00

當CY=1時,[M]→PC

MOV Rd,Rs

1

0

0

1

Rd

Rs

RsRd

ADD Rd,Rs

0

1

0

1

Rd

Rs

Rs+RdRd

SUB Rd,Rs

0

1

1

0

Rd

Rs

Rd-Rs→Rd

CLR Rd

1

1

0

1

Rd

00

0Rd

DEC Rd

1

1

1

0

00

Rd

Rd-1Rd

RR Rd

1

0

0

0

Rd

00

Rd循環右移一位

RL Rd

0

1

1

1

Rd

00

Rd循環左移一位

IN  Rd,I/O

0

0

0

1

Rd

00

I/O→Rd

OUT Rs,I/O

0

0

1

0

00

Rs

Rs→I/O

HALT

1

1

1

1

00

00

停機

 

3.指令系統

助記符

操作數

指令碼

長度

說明

IN

R0,IOL

10

1

I/O(數據開關)低字節→R0

IN

R1,IOL

14

1

I/O(數據開關)低字節→R1

IN

R2,IOL

18

1

I/O(數據開關)低字節→R2

IN

R3,IOL

1C

1

I/O(數據開關)低字節→R3

OUT

IOH,R0

20

1

R0I/O(數據開關)高字節

OUT

IOH,R1

21

1

R1→I/O(數據開關)高字節

OUT

IOH,R2

22

1

R2→I/O(數據開關)高字節

OUT

IOH,R3

23

1

R3→I/O(數據開關)高字節

LDA

R0,*

30

3

[M]→R0 

LDA

R1,*

34

3

[M]→R1 

LDA

R2,*

38

3

[M]→R2 

LDA

R3,*

3C

3

[M]→R3 

STA

*,R0

40

3

R0→[M]

STA

*,R1

41

3

R1→[M]

STA

*,R2

42

3

R2→[M]

STA

*,R3

43

3

R3→[M]

 

 

 

 

 

ADD

R0,R0

50

1

R0+R0→R0

ADD

R0,R1

51

1

R0+R1→R0

ADD

R0,R2

52

1

R0+R2→R0

ADD

R0,R3

53

1

R0+R3→R0

ADD

R1,R0

54

1

R1+R0→R1

ADD

R1,R1

55

1

R1+R1→R1

ADD

R1,R2

56

1

R1+R2→R1

ADD

R1,R3

57

1

R1+R3→R1

ADD

R2,R0

58

1

R2+R0→R2

ADD

R2,R1

59

1

R2+R1→R2

ADD

R2,R2

5A

1

R2+R2→R2

ADD

R2,R3

5B

1

R2+R3→R2

ADD

R3,R0

5C

1

R3+R0→R3

ADD

R3,R1

5D

1

R3+R1→R3

ADD

R3,R2

5E

1

R3+R2→R3

ADD

R3,R2

5F

1

R3+R3→R3

SUB

R0,R0

60

1

R0-R0→R0

SUB

R0,R1

61

1

R0-R1→R0

SUB

R0,R2

62

1

R0-R2→R0

SUB

R0,R3

63

1

R0-R3→R0

SUB

R1,R0

64

1

R1-R0→R1

SUB

R1,R1

65

1

R1-R1→R1

SUB

R1,R2

66

1

R1-R2→R1

SUB

R1,R3

67

1

R1-R3→R1

SUB

R2,R0

68

1

R2-R0→R2

SUB

R2,R1

69

1

R2-R1→R2

SUB

R2,R2

6A

1

R2-R2→R2

SUB

R2,R3

6B

1

R2-R3→R2

SUB

R3,R0

6C

1

R3-R0→R3

SUB

R3,R1

6D

1

R3-R1→R3

SUB

R3,R2

6E

1

R3-R2→R3

SUB

R3,R2

6F

1

R3-R3→R3

 

 

 

 

 

RL

R0

70

1

R0循環左移一位

RL

R1

74

1

R1循環左移一位

RL

R2

78

1

R2循環左移一位

RL

R3

7C

1

R3循環左移一位

 

 

 

 

 

RR

R0

80

1

R0循環右移一位

RR

R1

84

1

R1循環右移一位

RR

R2

88

1

R2循環右移一位

RR

R3

8C

1

R3循環右移一位

 

 

 

 

 

MOV

R0,R0

90

1

R0→R0

MOV

R0,R1

91

1

R1→R0

MOV

R0,R2

92

1

R2→R0

MOV

R0,R3

93

1

R3→R0

MOV

R1,R0

94

1

R0→R1

MOV

R1,R1

95

1

R1→R1

MOV

R1,R2

96

1

R2→R1

MOV

R1,R3

97

1

R3→R1

MOV

R2,R0

98

1

R0→R2

MOV

R2,R1

99

1

R1→R2

MOV

R2,R2

9A

1

R2→R2

MOV

R2,R3

9B

1

R3→R2

MOV

R3,R0

9C

1

R0→R3

MOV

R3,R1

9D

1

R1→R3

MOV

R3,R2

9E

1

R2→R3

MOV

R3,R2

9F

1

R3→R3

 

 

 

 

 

JMP

*

A0

3

[M]→PC,即跳轉到M所指單元

JZ

*

B0

3

當Z=1時,跳轉到M所指單元

JC

*

C0

3

當CY=1時,跳轉到M所指單元

 

 

 

 

 

CLR

R0

D0

1

將R0清零

CLR

R1

D4

1

將R1清零

CLR

R2

D8

1

將R2清零

CLR

R3

DC

1

將R3清零

 

 

 

 

 

DEC

R0

E0

1

將R0值減1

DEC

R1

E4

1

將R1值減1

DEC

R2

E8

1

將R2值減1

DEC

R3

EC

1

將R3值減1

 

 

 

 

 

HALT

“”

F0

1

停機


五、微程序流程圖


六、微指令代碼

微址00002)1)

M23

M22

M21

M20

M19

M18

M17

M16

代碼

M15

M14

M13

M12

M11

M10

M9

M8

代碼

M7

M6

M5

M4

M3

M2

M1

M0

代碼

後續微址

說明

E/M

IP

MWR

R/M

o2

o1

O0

OP

M

CN

S2

S2

S0

X2

X1

X0

XP

W

ALU

Iu

IE

IR

Icz

Ids

000

1

1

1

1

1

1

1

1

ff

1

1

1

1

1

1

1

1

ff

1

1

1

1

1

1

1

1

ff

+1

空操作

001

1

0

1

1

1

1

1

1

bf

1

1

1

1

1

0

1

1

fb

1

1

1

1

1

0

0

0

F8

可變

ibus→ir

620

1

1

1

1

0

0

0

0

F0

1

1

1

1

1

1

0

0

fc

0

1

1

0

1

1

0

1

6d

001

i/o→rd

640

1

1

1

1

0

1

0

1

f5

1

1

1

1

1

0

0

1

f9

1

1

1

0

1

1

0

1

ed

001

rS→i/o

660

1

1

1

1

1

0

1

0

fa

1

1

1

1

1

0

1

1

fb

1

1

1

1

1

1

1

1

ff

+1

ROm→bl

661

1

0

1

1

1

0

1

1

bb

1

1

1

1

1

0

1

1

fb

1

1

1

1

1

1

1

1

ff

+1

ROm→bh

662

1

0

1

1

1

1

0

0

bc

1

1

0

0

0

1

1

0

c6

0

0

1

1

1

1

1

1

3F

+1

bx→ar

663

0

1

1

1

0

0

0

0

70

1

1

1

1

1

0

1

1

fb

1

1

1

0

1

1

0

1

ed

001

ROm→rd

680

1

1

1

1

1

0

1

0

fa

1

1

1

1

1

0

1

1

fb

1

1

1

1

1

1

1

1

ff

+1

ROm→bl

681

1

0

1

1

1

0

1

1

bb

1

1

1

1

1

0

1

1

fb

1

1

1

1

1

1

1

1

ff

+1

ROm→bh

682

1

0

1

1

1

1

0

0

bc

1

1

0

0

0

1

1

0

c6

0

0

1

1

1

1

1

1

3F

+1

bx→ar

683

0

1

0

1

1

1

1

1

5f

1

1

1

1

1

0

0

1

F9

1

1

1

0

1

1

0

1

ed

001

rd→ROm

6a0

1

1

1

1

1

0

1

0

fa

1

0

1

1

1

0

0

1

b9

1

1

0

1

1

1

1

1

Df

+1

rs→bl

6a1

1

1

1

1

1

0

0

0

f8

1

1

1

1

1

0

0

1

f9

0

1

0

1

1

1

1

1

5f

+1

rd→al

6a2

1

1

1

1

0

0

0

1

F1

0

1

1

0

0

1

1

0

66

0

1

0

0

1

1

0

1

4d

001

a+b→rd

6c0

1

1

1

1

1

0

0

0

F8

1

0

1

1

1

0

0

1

b9

1

1

0

1

1

1

1

1

Df

+1

rD→Al

6c1

1

1

1

1

1

0

1

0

FA

1

0

1

1

1

0

0

1

B9

1

1

0

1

1

1

1

1

5f

+1

rS→Bl

6c2

1

1

1

1

0

0

0

1

f1

0

1

1

0

1

1

1

0

6e

0

1

0

0

1

1

0

1

4d

001

a-b→rd

6E0

1

1

1

1

1

0

0

0

f8

1

1

1

1

1

0

0

1

f9

0

1

0

1

1

1

1

1

5f

+1

rd→al

6E1

1

1

1

1

0

0

0

0

F0

0

1

1

1

0

1

1

0

56

0

1

0

0

1

1

0

1

4d

001

a左移→rd

700

1

1

1

1

1

0

0

0

f8

1

1

1

1

1

0

0

1

f9

0

1

0

1

1

1

1

1

5f

+1

rd→al

701

1

1

1

1

0

0

0

0

F0

0

1

0

1

1

1

1

0

5e

0

1

0

0

1

1

0

1

4d

001

a右移→rd

720

1

1

1

1

0

0

0

1

F0

1

1

1

1

1

0

0

1

f9

0

1

1

0

1

1

0

1

6d

001

rs→rd

740

1

1

1

1

1

0

1

0

fa

1

1

1

1

1

0

1

1

fb

1

1

1

1

1

1

1

1

ff

+1

ROm→bl

741

1

0

1

1

1

0

1

1

bb

1

1

1

1

1

0

1

1

fb

1

1

1

1

1

1

1

1

ff

+1

ROm→bh

742

0

0

1

1

1

1

1

1

3f

1

1

0

0

0

1

1

0

c6

0

0

1

0

1

1

0

1

2d

001

bx→pc

760

1

1

1

1

1

0

1

0

fa

1

1

1

1

1

0

1

1

fb

1

1

1

1

1

1

1

1

ff

+1

ROm→bl

761

1

0

1

1

1

0

1

1

bb

1

1

1

1

1

0

1

1

fb

1

1

1

1

1

1

1

1

ff

+1

ROm→bh

762

1

0

1

1

1

1

0

0

bc

1

1

0

0

0

1

1

0

c6

0

0

1

1

1

1

1

1

3F

+1

bx→ar

763

1

1

1

1

1

1

1

1

ff

1

1

0

0

0

1

1

0

C6

1

1

1

1

1

1

0

0

FC

764+z

條件變址

764

1

1

1

1

1

1

1

1

ff

1

1

1

1

1

1

1

1

ff

1

1

1

0

1

1

0

1

ed

001

空操作

765

0

0

1

1

1

1

1

1

3f

1

1

0

0

0

1

1

0

c6

0

0

1

0

1

1

0

1

2d

001

bx→pc

780

1

1

1

1

1

0

1

0

fa

1

1

1

1

1

0

1

1

fb

1

1

1

1

1

1

1

1

ff

+1

ROm→bl

781

1

0

1

1

1

0

1

1

bb

1

1

1

1

1

0

1

1

fb

1

1

1

1

1

1

1

1

ff

+1

ROm→bh

782

1

0

1

1

1

1

0

0

bc

1

1

0

0

0

1

1

0

c6

0

0

1

1

1

1

1

1

3F

+1

bx→ar

783

1

1

1

1

1

1

1

1

ff

1

1

0

0

0

1

1

0

C6

1

1

1

1

0

1

0

1

F5

784+CY

條件變址

784

1

1

1

1

1

1

1

1

ff

1

1

1

1

1

1

1

1

ff

1

1

1

0

1

1

0

1

ed

001

空操作

785

0

0

1

1

1

1

1

1

3f

1

1

0

0

0

1

1

0

c6

0

0

1

0

1

1

0

1

2d

001

bx→pc

微址00002)1)

M23

M22

M21

M20

M19

M18

M17

M16

代碼

M15

M14

M13

M12

M11

M10

M9

M8

代碼

M7

M6

M5

M4

M3

M2

M1

M0

代碼

後續微址

說明

E/M

IP

MWR

R/M

o2

o1

O0

OP

M

CN

S2

S2

S0

X2

X1

X0

XP

W

ALU

Iu

IE

IR

Icz

Ids

7A0

1

1

1

1

0

0

0

0

F0

1

1

0

1

1

1

1

0

de

0

1

0

0

1

1

0

1

4d

001

0→rd

7C0

1

1

1

1

1

0

0

0

f8

1

1

1

1

1

0

0

1

f9

0

1

0

1

1

1

1

1

5f

+1

rd→al

7C1

1

1

1

1

0

0

0

0

F0

1

1

0

1

0

1

1

0

D6

0

1

0

0

1

1

0

1

4d

001

A-1→rd

7E0

1

1

1

1

1

0

0

0

F8

1

1

1

1

1

0

0

0

F8

0

0

0

1

1

1

1

1

1F

+1

PC->AX

7E1

0

0

1

1

1

1

1

1

3F

1

1

0

1

0

1

1

0

D6

0

0

0

0

1

1

0

1

0D

001

AX-1->PC


十、參考資料

1、無錫達愛思科教儀器廠自編.《十六位體系結構計算機組成原理實驗指導書(第三版)》 20126月。重點參考其中的“分段模型機的設計與實現”(3.2節)、“帶移位運算的模型機的設計與實現”(3.3節)、“複雜模型機的設計與實現”(3.4節)。

2、《計算機組成原理微控制器編程手冊》。

3、《計算機組成與系統結構》,袁春風著。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章