计组课程设计

 

计算机组成与系统结构课程设计实验报告

 

 

 

 

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

专业班级: 计算机科学与技术172                    

姓名:                        

学号:                       

 

 

 

 

2019.06.20

 

广州大学学生实验报告

开课学院及实验室:计算机科学与工程实验室                       2019年 6 月20日

学院

计算机科学与教育软件学院

年级/专业/

计科172

姓名

 

学号

 

实验课程名称

计算机组成与系统结构实验课

成绩

 

实验项目名称

计算机组成与系统结构课程设计

指导老师

 

 

2、课程设计的性质、目的、任务

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

  1. 课程设计的基本理论

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

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

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

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

4、课程设计的题目

综合运用所学计算机原理知识,设计并实现具有以下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

RR  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

停机

 

  1. check_1

;课程设计检查程序1,含除跳转指令外的12条指令:

add,and,dec,ldi,clr,rl,rr,ldr,sta,mov,out,hlt

#LOAD "lcy.IS"  ;预调入指令系统/微程序,用自己的微程序文件名称

    org   0

       

start:LDI  r0,12h

sta 100h,r0

lda r1,100h

dec r1

rl r0

add r0,r1

rr r0

add r0,r1

ldi r2,76h

and r2,r0

mov r3,r2

add r3,r1

clr r0

out ioh,r3

hlt

  end

  1. check_2

;课程设计检查程序2,含3条跳转指令:jz,jc,jmp

#LOAD "lcy.IS"  ;预调入指令系统/微程序,用自己的微程序文件名称

    org   0

start:

 

LDI  r0,12h

sub  r0,r0

jz tag1

ldi  r3,0eeh

jmp tag2

tag1:ldi r3,33h

tag2:ldi r0,88h

add r0,r0

jc tag3

ldi r2,0eeh

jmp tag4

tag3:ldi r2,22h

tag4:ldi r1,11h

ldi r0,0

add r1,r0

jz tag5

jmp tag6

tag5:ldi r1,0eeh

tag6:jc tag7

ldi r0,0h

jmp tag8

tag7:ldi r0,0eeh

tag8:hlt

  end

 

5、画出微程序流程图(树型图)

 

6、填写所设计的模型机微指令表(只填写有微指令的相关行):

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

0000

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

 

0001

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

+1

 

0600

1

1

1

1

1

0

1

0

FA

1

1

1

1

1

0

0

1

F9

1

1

0

1

1

1

1

1

DF

+1

SUB

0601

1

1

1

1

1

0

0

0

F8

1

1

1

1

1

0

0

1

F9

0

0

1

1

1

1

1

1

5F

+1

 

0602

1

1

1

1

0

0

0

0

F0

0

1

1

0

1

1

1

0

6E

0

1

0

0

1

1

1

1

4F

0001

 

0620

1

1

1

1

1

0

0

0

F8

1

1

1

1

1

0

0

1

F9

1

1

1

1

1

1

1

1

FF

+1

ADD

0621

1

1

1

1

1

0

1

0

FA

1

1

1

1

1

0

0

1

F9

0

1

1

1

1

1

1

1

7F

+1

 

0622

1

1

1

1

0

0

0

0

F0

0

1

1

0

0

1

1

0

66

0

1

1

0

1

1

0

1

6D

0001

 

0640

1

1

1

1

1

0

1

0

FA

1

1

1

1

1

0

0

1

F9

1

1

0

1

1

1

1

1

DF

+1

AND

0641

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

 

0642

1

1

1

1

0

0

0

0

F0

1

1

1

0

1

1

1

0

EE

0

1

0

0

1

1

1

1

4F

0001

 

0660

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

DEC

0661

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

0001

 

0680

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

CLR

0681

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

0001

 

06A0

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

RL

06A1

1

1

1

1

0

0

0

0

F0

0

1

1

1

0

1

1

0

76

0

1

0

0

1

1

0

1

4D

0001

 

06C0

1

1

1

1

1

0

0

0

F8

1

1

1

1

1

0

0

1

F9

0

1

1

1

1

1

1

1

7F

+1

RR

06C1

1

1

1

1

0

0

0

0

F0

0

1

0

1

1

1

1

0

5E

0

1

1

0

1

1

0

1

6D

0001

 

06E0

1

1

1

1

0

0

0

0

F0

1

1

1

1

1

0

0

1

F9

1

1

1

0

1

1

0

1

ED

0001

MOV

0700

1

1

1

1

0

0

0

0

F0

1

1

1

1

1

0

1

1

FB

1

1

0

1

1

1

1

1

DF

+1

LDI

0701

1

0

1

1

1

1

1

1

BF

1

1

1

1

1

1

1

1

FF

1

1

1

0

1

1

0

1

ED

0001

 

0720

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

0001

OUT

0740

1

1

1

1

1

0

0

0

F8

1

1

1

1

1

0

1

1

FB

1

1

0

1

1

1

1

1

DF

+1

LDA

0741

1

0

1

1

1

0

0

1

B9

1

1

1

1

1

0

1

1

FB

1

1

0

1

1

1

1

1

DF

+1

 

0742

1

0

1

1

1

1

0

0

BC

1

1

1

1

1

1

1

0

FE

0

0

0

1

1

1

1

1

1F

+1

 

0743

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

0001

 

0760

1

1

1

1

1

0

1

0

FA

1

1

1

1

1

0

1

1

FB

1

1

0

1

1

1

1

1

DF

+1

STA

0761

1

1

1

1

1

0

1

0

BB

1

1

1

1

1

0

1

1

FB

1

1

0

1

1

1

1

1

DF

+1

 

0762

1

0

1

1

1

1

0

0

BC

1

1

0

0

0

1

1

0

C6

0

0

0

0

1

1

1

1

0F

0763

 

0763

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

0001

 

0780

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

JMP

0781

1

1

1

1

1

0

1

0

BB

1

1

1

1

1

0

1

1

FB

1

1

1

1

1

1

1

1

FF

+1

 

0782

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

0001

 

07A0

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

JZ

07A1

1

1

1

1

1

0

1

0

BB

1

1

1

1

1

0

1

1

FB

1

1

1

1

1

1

1

1

FF

+1

 

07A2

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

 

07A3

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

07A4

 

07A4

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

0001

 

07A5

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

0001

 

07C0

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

JC

07C1

1

1

1

1

1

0

1

0

BB

1

1

1

1

1

0

1

1

FB

1

1

1

1

1

1

1

1

FF

+1

 

07C2

1

0

1

1

1

1

0

0

BC

1

1

0

0

0

1

1

0

C6

0

0

1

1

1

1

0

1

3D

07C4

 

07C4

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

0001

 

07C5

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

0001

 

07E0

1

1

1

1

1

0

0

0

F8

1

1

1

1

1

0

0

0

F8

0

0

1

1

1

1

1

1

3F

+1

HLT

07E1

0

0

1

1

1

1

1

1

3F

1

1

0

1

0

1

1

0

D6

0

0

1

0

1

1

0

1

2D

0001

 

  1. 列表说明检测的机器指令程序,包括每个语句的地址、指令代码、助记符(即汇编语句)、功能说明。

;分段/RISC模型机指令系统

 

;助记符 操作数              指令码 长度

;-----------------------------------------------------

LDI     R0,*                80      2             ;将指令中的立即数(第二字节)送入R0

LDI     R1,*                84      2             ;将指令中的立即数(第二字节)送入R0

LDI     R2,*                88      2             ;将指令中的立即数(第二字节)送入R2

LDI     R3,*                8C      2             ;将指令中的立即数(第二字节)送入R3

STA     *,R0                B0      3             ;Rs(R0)→[M]

STA     *,R3                B3      3             ;Rs(R0)→[M]

LDA     R1,*                A4      3             ;[M] →R1

DEC     R1                  34      1             ;将R1值减1

RL      R0                  50      1             ;R0循环左移一位

SUB     R0,R1               01      1             ;R0-R1→R1

RR      R0                  60      1             ;R0循环右移一位

ADD     R0,R0               10      1             ;R0+R0→R0

ADD     R0,R1               11      1             ;R0+R1→R0

ADD     R1,R0               14      1             ;R0+R1→R1

ADD     R2,R3               1B      1             ;R2+R3→R2

ADD     R3,R2               1E      1             ;R2+R3→R3

ADD     R3,R1               1D      1             ;R1+R3→R3

SUB     R0,R0               00      1             ;R0-R0->R0

AND     R0,R1               21      1              ;Rd&Rs→Rd (R2和R0相与)

AND     R2,R0               28      1              ;Rd&Rs→Rd (R2和R0相与)

MOV     R3,R2               7E      1             ;R2→R3

MOV     R0,R1               71      1             ;R1→R0

CLR     R0                  40      1             ;将R0清零

OUT     IOH,R0              90      1             ;R0→I/O(数据开关)高字节

OUT     IOH,R1              91      1             ;R1→I/O(数据开关)高字节

OUT     IOH,R2              92      1             ;R1→I/O(数据开关)高字节

OUT     IOH,R3              93      1             ;R3→I/O(数据开关)高字节

JMP     *                   C0      3             ;[M]->PC,即跳到M所指单元

JZ      *                   D0      3             ;当Z=1时,跳转到M所指单元

JC      *                   E0      3             ;当CY=1时,跳转到M所指单元

HLT     ""                  F0      1             ;停机

 

  1. 运行检测程序后的结果图片。

Check.1程序跑完的结果:

 

Check.2程序跑完的结果:

 

9、存在的问题及体会

 

计算机组成是计算机专业课程,对计算机组成的了解深入与否很大程度决定一个的程序员水平的高低。我对计算机组成原理这门课程是非常感兴趣的。特别是计算机组成实验课。课堂上的知识碍于时间限制,老师不可能面面俱到,而且对于新手来说,这门课程显得生涩难懂,需要学生投入足够的时间硬啃。老实说,上了一学期的课,我还是对很多知识感到陌生。在接下来的暑假,我打算自己再学一遍。这学期,感谢老师的循循善诱 诲人不倦。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/418866.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

阿里云人脸识别sdk

https://help.aliyun.com/document_detail/64074.html?spma2c4g.11186623.6.566.107a1619AfifHp

前端学习(1803):前端调试之事件伪类练习二

index.html <!DOCTYPE html> <html lang"en"><head><!--系统内置 start--><script type"text/javascript"></script><!--系统内置 end--><meta charset"UTF-8"><title>练习</title&g…

Spring 国际化

http://www.xdemo.org/spring-i18n/ xxxx_zh_CN.properties中不允许保存中文&#xff0c;用jdk/bin目录下的native2ascii.exe将中文转化为Unicoding即可 此处是native2ascii在线转化工具http://www.javawind.net/tools/native2ascii.jsp?actiontransform转载于:https://www.cn…

JS:两个json数组合并、去重,以及删除某一项元素

https://blog.csdn.net/qq_33242126/article/details/83107866

数据结构课程设计 神秘国度的爱情故事

数据结构 课程设计报告 广州大学 计算机科学与网络工程学院 计算机系 17级计科专业2班 2019年6月30日 广州大学学生实验报告 开课学院及实验室&#xff1a;计算机科学与工程实验室 2019年07月01日 学院 计算机科学与网络工程学院 年级/专业/班 计科1…

前端学习(1805):前端调试之列表伪类练习

index.html <!DOCTYPE html> <html lang"en"><head><!--系统内置 start--><script type"text/javascript"></script><!--系统内置 end--><meta charset"UTF-8"><title>练习</title&g…

Android中的一些基础知识(二)

这几天在回顾Android的基础知识&#xff0c;就把一些常见的知识点整理一下&#xff0c;以后忘了也可以翻出来看一看。 简单介绍一下Activity的生命周期 在API文档中对生命周期回调的函数描述的很详细&#xff0c;这里我只是翻译了一下。 onCreate&#xff1a;当Activity第一次…

关于Open browser failed!! Please check if you have installed the browser chrome correctly!错误的一种解决方法

新建一个文件夹&#xff0c;再在新建的文件夹里写html文件&#xff0c;再用快捷键&#xff1a;altb打开即可。

合并两个数组并去重(ES5和ES6两种方式实现)

https://blog.csdn.net/weixin_40890907/article/details/82764900

前端学习(1806):前端调试之列表伪类练习二

index.html <!DOCTYPE html> <html lang"en"><head><!--系统内置 start--><script type"text/javascript"></script><!--系统内置 end--><meta charset"UTF-8"><title>练习</title&g…

虚拟机安装

带你解密Linux的【Vm】-CSDN博客https://blog.csdn.net/lz17267861157/article/details/134031133

phpStorm解释器与服务器配置(解决502 bad gateway的一种解决办法)

不要在浏览器中打开多个localhost页面&#xff0c;打开一个即可

推荐开发工具系列之--LinrF5(自动刷新)

最近有点事&#xff1b;略忙&#xff1b;以至于上篇文章说好的明天一直到了今天才到&#xff1b; //*******************************分割是会呼吸的痛****************************** 作为一个程序员&#xff1b;尤其是作为一个网站开发程序员&#xff1b;如果再更尤其点作为一…

SpringMvc项目加载顺序及上下文小结

https://www.cnblogs.com/angry-scholar/p/7729052.html

前端学习(1807):前端调试之列表伪类练习三

index.html <!DOCTYPE html> <html lang"en"><head><!--系统内置 start--><script type"text/javascript"></script><!--系统内置 end--><meta charset"UTF-8"><title>练习</title&g…

关于win32与win64的兼容性问题

源代码&#xff1a; &#xff08;操作系统作业&#xff09;printf("\nMemory attached at %X\n",(int)shm); shm是个char*地址&#xff1b; gcc编译出现警告&#xff1a;lcylcy-Lenovo-R720-15IKBN:~ $ gcc -o shmread shmread.c shmread.c: In function ‘main’:…