Bootstrap

计算机组成原理课程设计

计算机组成与系统结构

课程设计报告

 

 

 

    院:   计算机科学与网络工程学院

专业班级:   网络工程             

    号:   19062000                

    名:   超级菜狗                    

 

完成日期:    2021 01 12

 

一、本课程设计的性质、目的、任务  

《计算机组成与系统结构课程设计》是计算机学院各专业集中实践性环节之一,是学习完《计算机组成与系统结构》课程后进行的一次全面的综合练习。其目的是综合运用所学计算机原理知识,设计并实现一台模型计算机,以便巩固所学的知识,提高分析问题和解决问题的能力。

二、本课程设计的基本理论

1、掌握算术、逻辑、移位运算实验,熟悉ALU运算控制位的运用。

2、掌握存储器组织、读写方式及与总路线组成的数据通路,掌握地址总线、数据总线的工作原理。

3、掌握指令结构和指令取指、执行工作过程。

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

三、课程设计题目

题目

综合运用所学计算机原理知识,设计并实现具有以下16条指令的指令集结构的模型计算机:

编号

助记符

机器指令码

说明

0

SUB  Rd,Rs

0000 RdRs 

Rd-Rs→Rd

1

ADD  Rd,Rs

0001 RdRs 

Rd+Rs→Rd

2

AND  Rd,Rs

0010 RdRs 

Rd&Rs→Rd (Rd和Rs相与)

3

DEC Rd

0011 Rd00

将Rd值减1

4

CLR Rd

0100 Rd00

将Rd清零

5

RL  Rd

0101 Rd00  

Rd循环左移一位

6

RRC  Rd

0110 Rd00

Rd带进位右移一位

7

MOV Rd,Rs 

0111 RdRs

Rs→Rd

8

LDI  Rd,*

1000 Rd00   XXXXXXXX

将指令中的立即数(第二字节)送入Rd

9

OUT  IOH,Rs

1001 00Rs

Rs→i/o(数据开关)高字节

10

LDA  Rd,M

1010 Rd00   XXXXXXXX   XXXXXXXX

[M] →Rd

11

STA  M,Rs

1011 00Rs   XXXXXXXX   XXXXXXXX

Rs→[M]

12

JMP M

1100 0000  XXXXXXXX   XXXXXXXX

[M]→PC,即跳转到M所指单元

13

JZ M

1101 0000  XXXXXXXX   XXXXXXXX

当Z=1时,跳转到M所指单元

14

JC M

1110 0000  XXXXXXXX   XXXXXXXX

当CY=1时,跳转到M所指单元

15

HALT

1111 0000

停机

 

模型计算机设计完成后,用所给的测试程序check20_1.asm(测13条非转移指令)和

check20_2.asm(测3条转移指令)检查正确性。检查方法:在测试程序中#load s本人的.IS微指令程序,实验箱电源关闭重启并连接,装载后选择“运行”或“单步”执行。

check20_1.asm运行的正确结果为:寄存器R0R1R2R3分别显示00112233,IOH显示33。

check20_2.asm运行的正确结果为:寄存器R0R1R2R3分别显示00112233,如果显示EE则执行有错误。

 

       
 

check20_1.asm程序的运行结果

 

 

check20_2.asm程序的运行结果

 

 

 

 

 

 

 

 

 

  • 微程序流程图(树形图)

 

  • 课程设计的模型机微指令表(只填写有微指令的相关行):

微址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

0001

0

1

0

0

0

0

0

0

40

0

0

0

0

0

1

0

0

04

0

0

0

0

0

1

1

1

07

0600

取指入口,用IR寄存器获取当前指令,并让PC+1

0600

0

0

0

0

0

1

1

1

07

0

0

0

0

0

1

1

0

06

1

0

0

0

0

0

0

0

80

0601

SUB的起始微指令,Ax=Rd

0601

0

0

0

0

0

1

0

1

05

0

0

0

0

0

1

1

0

06

0

0

0

0

0

0

0

0

00

0602

BX=Rs

0602

0

0

0

0

1

1

1

1

0F

1

0

0

1

0

0

0

1

91

1

0

0

0

0

0

1

0

82

0001

Rd=A-B

0620

0

0

0

0

0

1

1

1

07

0

0

0

0

0

1

1

0

06

1

0

0

0

0

0

0

0

80

0621

ADD的起始微指令,Ax=Rd

0621

0

0

0

0

0

1

;