计算机组成原理实验报告.docx

上传人:b****6 文档编号:3267044 上传时间:2022-11-21 格式:DOCX 页数:10 大小:399.43KB
下载 相关 举报
计算机组成原理实验报告.docx_第1页
第1页 / 共10页
计算机组成原理实验报告.docx_第2页
第2页 / 共10页
计算机组成原理实验报告.docx_第3页
第3页 / 共10页
计算机组成原理实验报告.docx_第4页
第4页 / 共10页
计算机组成原理实验报告.docx_第5页
第5页 / 共10页
点击查看更多>>
下载资源
资源描述

计算机组成原理实验报告.docx

《计算机组成原理实验报告.docx》由会员分享,可在线阅读,更多相关《计算机组成原理实验报告.docx(10页珍藏版)》请在冰豆网上搜索。

计算机组成原理实验报告.docx

计算机组成原理实验报告

评语:

课中检查完成的题号及题数:

课后完成的题号与题数:

成绩:

自评成绩:

XX

实验报告

实验名称:

CPU与简单模型机设计实验日期:

2016.XX.XX

班级:

1001XXXX学号:

2014XXXX姓名:

XX

同组同学信息

班级:

1001XXXX学号:

2014XXXXX姓名:

XXXX

一、实验目的:

1.掌握一个简单CPU的组成原理。

2.在掌握部件单元电路的基础上,进一步将其构造一台基本模型计算机

3.为其定义五条机器指令,编写相应的微程序,并上机调试掌握整机概念。

二、实验内容:

1.修改现有的指令系统,将加法指令的功能修改为R0的内容和某个存储单元的内容相加。

增加存数,取数和减法三条机器指令,指令助记符分别为STA,LAD和SUB,指令操作码分别为60,70和80。

2.利用修改后的指令系统编写一段程序,完成16位二进制数的加减法运算。

三、项目要求及分析:

1.将加法指令的功能修改为R0的内容和某个存储单元的内容相加。

原来的加法指令中的两个数相等且均来自R0寄存器,因此只需要在加法指令中增加取数操作,并将当前的操作数存入运算单元即可。

具体的操作步骤如下:

a)将R0中的数据送ALU中的A;

b)给出另一个数在内存中的地址;

c)从内存中取出相应的数据并送ALU中的B;

d)进行加法运算并将结果送R0。

存数指令的具体操作过程如下:

a)从IN读入数据要存储的地址;

b)将地址送至AR;

c)从IN读入要存储的数据;

d)将数据送入内存中的相应存储单元。

取数操作的具体操作过程如下:

a)从IN读入数据的存储地址;

b)将存储地址送至AR;

c)将取出的数据送至R0;

减法指令的具体操作过程如下:

a)将被减数送至ALU的A;

b)将减数送至ALU的B;

c)ALU进行减法操作,结果送R0;

2.实现16位二进制数的加减法运算只要利用以后的指令系统,编写相应的程序。

可以先将两个十六位的二进制数的高八位和低八位分别存入不同的地址,然后先取出两个数低八位进行相加,送至OUT单元显示,进位进行存储;再进行两个数低八位相加,结果在数据总线出显示。

四、具体实现:

应包含以下内容:

画出增加机器指令的微程序流程图、编制二进制代码表、编写微程序、编写机器指令验证程序。

机器指令的微程序流程图如下:

操作

地址

十六进制

说明

IN->R0

36

183011

从IN单元读入存储地址送至R0

RO->AR

11

006412

将R0中的存储地址送往AR

IN->RO

12

183013

从IN单元读入数据送至R0

R0->MEM

13

200401

把R0内容送往内存

IN->R0

37

183015

从IN单元读入存储地址送往R0

R0->AR

15

006416

把R0中的存储地址送往AR

MEM->RO

16

103001

把内存中相应的数据送往R0

R0->A

30

001417

R0中的数据送入A

IN->R0

17

183018

从IN单元读入存储地址送入R0

R0->AR

18

006419

R0中的存储地址送入AR

MEM->B

19

102005

内存中的数据送往B

A+B->R0

05

053201

A+B结果送入R0

RO->A

38

00142C

R0中的数据送入A

IN->R0

2C

18302D

从IN单元读取存储地址送至R0

R0->AR

2D

00642E

R0中的存储地址送入R0

MEM->B

2E

10202F

内存中相应数据送入B

A-B->R0

2F

05B201

A-B的结果送入R0

IN->R0

32

183001

从IN单元读取数据送入R0

R0->OUT

33

280401

把R0单元的值送入OUT显示

PC->AR

3C

006D5D

PC中的地址送入AR

MEM->PC

1D

105141

内存中的指令地址送PC

二进制代码表如下:

地址

十六进制

高五位

S3-S0

A字段

B字段

C字段

MA5-MA0

00

000001

00000

0000

000

000

000

000001

01

006D43

00000

0000

110

110

101

000011

03

107070

00010

0000

111

000

001

110000

04

006D46

00000

0000

110

110

101

000110

05

04B201

00000

1001

011

001

000

000001

1D

105141

00010

0000

101

000

101

000001

30

001404

00000

0000

001

010

000

000100

32

183001

00011

0000

011

000

000

000001

33

280401

00101

0000

000

010

000

000001

35

000035

00000

0000

000

000

000

110101

3C

006D5D

00000

0000

110

110

101

011101

10

200401

00100

0000

000

010

000

000001

36

006D50

00000

0000

110

110

101

010000

37

006D51

00000

0000

110

110

101

010001

11

103001

00010

0000

011

000

000

000001

38

001412

00000

0000

001

010

000

010010

12

006D53

00000

0000

110

110

101

010011

13

102014

00010

0000

010

000

000

010100

14

05B201

00000

1011

011

001

000

000001

06

102005

00010

0000

010

000

000

000101

将加法指令的功能修改为R0的内容和某个存储单元的内容相加程序代码如下:

;//*****StartOfMainMemoryData*****//

$P0020;START:

INR0从IN单元读入数据送R0

$P0100;ADDR0,R0R0和自身相加,结果送R0

$P0230;OUTR0R0的值送OUT单元显示

$P0380;SUBro,mem

$P0430;OUTR0

$P0560;sta

$P0670;load

$P0730;

$P04E0;JMPSTART跳转至00H地址

$P0850;HLT停机

;//*****EndOfMainMemoryData*****//

;//**StartOfMicroControllerData**//

$M00000001;NOP

$M01006D43;PC->AR,PC加1

$M03107070;MEM->IR,P<1>

$M0504B201;A加B->R0

$M1D105141;MEM->PC

$M30001417;R0->A

$M17183018;in->r0

$M18006419;r0->ar

$M19102005;mem->b

$M32183001;IN->R0

$M33280401;R0->OUT

$M35000035;NOP

$M3C006D5D;PC->AR,PC加1

$M3800142C;r0->a

$M2C18302D;IN->r0

$M2D00642E;r0->ar

$M2E10202F;mem->b

$M2F05B201;a-b->r0

$M36183011;in->r0

$M11006412;r0->ar

$M12183013;in->r0

$M13200401;r0->mem

$M37183015;in->r0

$M15006416;r0->ar

$M16103001;mem->r0

以下的一段程序用于实现两个16位二进制数的加法,其思想为高位和低位分别对应相加,将低位的进位给高位,减法同理。

结果的低八位在OUT单元显示,高八位数据在数据总线显示,最高位的进位忽略。

代码如下:

$P0060;STA存加数的低八位

$P0160;STA存被加数的低八位

$P0260;STA存加数的高八位

$P0360;STA存被加数的高八位

$P0470;LDA取出加数的低八位存入R0中

$P0500;ADD两个数低八位相加

$P0630;OUT两个数低八位相加的结果在OUT单元显示

$P0770;LDA取出加数的高八位存入R0中

$P0800;ADD两个数的高八位相加

$P0950;HLT停机

五、调试运行结果:

从IN单元输入02,送入寄存器A,其对应的存储器单元里的地址数值为30,送入寄存器B,2+30=32加法结果:

加法的结果32被送入寄存器A,从IN单元输入02,其对应的存储器单元里的地址数值为30,送入寄存器B,32-30=02,减法结果如下:

完成十六位二进制数的加减法运算

加法:

输入的两个数据分别为:

01010010,11111111(52FF)00110010,00000001(3201)

输出的结果为:

10000101,00000000(8500)

减法:

输入的两个数据分别为:

01010110,11111111(56FF)00110010,00000001(3201)

输出的结果为:

001111111,11111110(3FFE)

注:

其中低八位在OUT单元显示,高八位在数据总线显示。

六、所遇问题及解决方法:

1.接线问题,由于线路复杂,一不小心接错了一根线,运行时,OUT单元总是没有显示,在用软件模拟时,单步执行,每次数据做完加减后,结果应该在OUT单元显示的,结果数据总是无法到达OUT单元,然后检查了一下线路,发现OUT单元的线路连错了,改正后,终于成功了。

2.实验中遇到过死循环情况。

我们检查加载的程序,发现同一个地址放了两个不同的微程序,修改地址,使地址不再发生冲突,成功解决了问题。

七、实验总结:

1.通过本次实验,细致地了解了计算机内部的基本电路,对简单模型机有了深刻的了认识。

我们修改了部分指令,并且增加了存数,取数和减法指令,学习

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1