计算机组成原理课程设计Word文件下载.docx

上传人:b****3 文档编号:16753355 上传时间:2022-11-25 格式:DOCX 页数:30 大小:94.47KB
下载 相关 举报
计算机组成原理课程设计Word文件下载.docx_第1页
第1页 / 共30页
计算机组成原理课程设计Word文件下载.docx_第2页
第2页 / 共30页
计算机组成原理课程设计Word文件下载.docx_第3页
第3页 / 共30页
计算机组成原理课程设计Word文件下载.docx_第4页
第4页 / 共30页
计算机组成原理课程设计Word文件下载.docx_第5页
第5页 / 共30页
点击查看更多>>
下载资源
资源描述

计算机组成原理课程设计Word文件下载.docx

《计算机组成原理课程设计Word文件下载.docx》由会员分享,可在线阅读,更多相关《计算机组成原理课程设计Word文件下载.docx(30页珍藏版)》请在冰豆网上搜索。

计算机组成原理课程设计Word文件下载.docx

,A

100000xx

2.该模型机微指令系统的特点(包括其微指令格式的说明等):

该模型机微指令系统的微指令格式是水平型微指令,微指令的字长为24位,是机器字长的3倍,每条微指令仅包含微操作控制字段,无顺序控制字段。

操作控制字段的每一位对应一个微操作,采用字段直接译码的方式对系统进行控制。

微指令的具体格式如下:

IREN

PCOE

S0

S1

S2

AEN

WEN

X0

X1

X2

FEN

CN

RWR

RRD

STEN

OUTEN

MAROE

MAREN

ELP

EINT

EMEN

EMRD

EMWR

XRD

微指令CBFFFF:

取指令

1

2。

计算机中实现乘法和除法的原理

(1)无符号乘法

①实例演示(即,列4位乘法具体例子演算的算式):

1101被乘数

×

1011乘数

1101位积

移位相加

11010位积

000000位积

1101000位积

10001111结果

②硬件原理框图:

右移

ALU

左移

CY

ST

 

W

被乘数

R0

乘数

R1

4

R2

③算法流程图:

开始

中间结果清0

乘数右移一位

移出位为1?

Yes

No

中间结果加被乘数

被乘数左移一位

移位次数为4

保存中间结果

结束

(2)无符号除法

①实例演示(即,列4位除法具体例子演算的算式):

01010------商

110110000111------被除数

00000000------不够减,商上0,除数右移一位

10000111------做差后的被除数

01101000------够减,商上1,除数右移一位

00011111------做差后的被除数

00011010------够减,商上1,除数右移一位

00000101------移位4次后,余数

除数

被除数

商清0

除数左移四位

被除数与除数比较

溢出

CY=0

除数右移一位

商左移一位

被除数减除数

商+1

保存结果

3.对应于以上算法如何分配使用COP2000实验仪中的硬件

(初步分配,设计完成后再将准确的使用情况填写在此处)

1)乘法程序的硬件分配:

硬件名称

在乘法算法中的功能

1用来存放被乘数2保存乘积结果

用来存放乘数

未使用

R3

用做计数器,来控制程序循环次数

1、存放中间结果2、用来存放操作数参加ALU的运算

用来存放操作数参加ALU的运算

PC

程序计数器

EM

内存(存放程序)

IR

指令寄存器

堆栈寄存器,可以用来暂存寄存器A的值

MAR

地址寄存器

2)除法程序的硬件分配

在除法运算中的功能

用来存放被除数

用来存放除数

用来存放商

1用作计数器,控制循环的次数2保存余数

1、存放中间数据2、用来存放操作数参加ALU的运算

4.在COP2000集成开发环境下设计全新的指令/微指令系统

设计结果如表所示(可按需要增删表项)

(1)新的指令集

(设计两个不同指令集要分别列表)

指令说明

_FATCH_

000000XX

实验机占用,不可修改。

复位后,所有寄存器清0,首先执行_FATCH_指令取指

MOVR?

#II

000001XX

II

将立即数II送到寄存器R?

A

000010XX

将累加器A的值送到寄存器R?

MOVA,R?

000011xx

将寄存器R?

的值送入累加器A中

ANDA,#II

000100xx

将立即数与累加器A中的数相与

ANDR?

,#II

000101xx

将立即数与寄存器R?

中的数相与

SHRR?

000110xx

寄存器R?

带进位右移

SHLR?

000111xx

带进位左移

JCMM

001000xx

MM

若进位标志置1,跳转到MM地址

JZMM

001001xx

若零标志置1,跳转到MM地址

ADDR?

001010xx

中的数与立即数相加

ADDA,R?

001011xx

将累加器与寄存器R?

相加,结果存入累加器

SUBR?

001100xx

中的值与立即数相减

SUBA,R?

001101xx

将累加器与寄存器R?

的值相减,结果存入累加器

CMPA,R?

001110xx

累加器与寄存器R?

的值比较,结果影响进位、零标志

JMPMM

001111xx

无条件跳转到MM处

PUSHA

010000xx

将累加器中的值暂存

POPA

010001xx

将暂存结果送回到累加器A中

SHRNR?

010010xx

寄存器R?

不带进位右移

SHLNR?

010011xx

不带进位左移

(2)新的微指令集

状态

微地址

微程序

数据输出

数据打入

地址输出

运算器

移位控制

uPC

PC

_FATCH_

T0

00

CBFFFFF

指令寄存器IR

PC输出

A输出

写入

+1

01

FFFFFF

A输出

02

03

T1

04

E7FBFF

存储器EM

PC输出

05

CBFFFF

06

07

,A

08

FFFB9F

ALU直通

09

指令寄存器IR

0A

0B

OC

FFF7F7

寄存器值R?

寄存器A

OD

0E

0F

ANDA,#II

T2

10

C&

7FFEF

存储器值EM

寄存器W

11

FFFE93

寄存器A标志位C、Z

与运算

12

13

ANDR?

T3

14

C7FFEF

15

16

FFFA9B

标志位C、Z

17

SHRR?

18

FFEF9F

堆栈寄存器ST

19

1A

FFFABF

ALU右移

1B

CBFF57

寄存器A指令寄存器IR

SHLR?

1C

AlU直通

推展寄存器ST

1D

寄存器值R?

1E

FFFADF

ALU左移

1F

20

C6FFFF

寄存器PC

21

22

23

24

25

26

27

28

29

2A

FFFA98

加运算

2B

ADDA,R?

2C

FFF7EF

2D

FFFE90

2E

2F

SUBR?

30

31

32

FFFA99

减运算

33

34

35

FFFE91

36

37

CMPA,R?

38

39

3A

3B

堆栈寄存器

3C

3D

3E

3F

40

41

42

43

44

FFFF57

45

46

FFFFF

47

48

49

4A

FFF9BF

4B

4C

4D

4E

FFF9DF

4F

5.用设计完成的新指令集编写实现无符号二进制乘法、除法功能的汇编语言程序

(1)乘法

4位乘法的算法流程图与汇编语言程序清单:

1)流程图如下:

被乘数送入R0

乘数送入R1

将4送入R3作计数送

寄存器A清0

R1带进位右移

CF=1?

YES

NO

ADDA,R0

R0不带进位左移

暂存A

SUBR3,#01H

恢复A

ZF=1?

MOVR0,A保存结果

2)汇编语言程序清单如下:

MOVR0,#0FH---被乘数在R0中

MOVR1,#0FH---乘数在R1中

MOVR3,#04H

ANDA,#00H

LOOP1:

SHRR1

JCNEXT1

JMPLOOP2

NEXT1:

ADDA,R0

LOOP2:

SHLNR0

PUSHA

SUBR3,#01H

POPA

JZNEXT2

JMPLOOP1

NEXT2:

MOVR0,A--乘积结果在R0中

END

(2)除法

4位除法的算法流程图与汇编语言程序清单:

1)算法流程图如下

CF=1?

SUBA,R1

被除数送入R0中

除数送入R1中

R2(商)+1

计数值4送入R3中

R2清0用来保存商

R1左移4位

R3减1

MOVA,R0

CMPA,R1

R1右移

MOVR3,A

R2(商)左移

CMPA,R1

MOVR0,#87H---被除数在R0中

MOVR1,#0DH---除数在R1中

MOVR3,#04H

ANDR2,#00H---商在R2中

SHLNR1

MOVA,R0

CMPA,R1

JCNEXT1

JMPQUIT

SHRNR1

SHLNR2

CMPA,R1

JCNEXT2

SUBA,R1

ADDR2,#01H

JZQUIT

JMPNEXT1

QUIT:

MOVR3,A---余数保存在R3中

END

6.上述程序的运行情况(跟踪结果)

按下表填写描述以上各程序运行情况的内容。

按每个程序一张表进行。

1)乘法程序运行的过程

汇编指令

程序地址

机器码

指令说明

微程序

PC

运行时寄存器或存储器的值

MOVR0,#0F

040F

立即数0F送入R0中

R0:

MOVR1,#0F

050F

立即数0F送入R1中

R1:

MOVR3,#04

0704

立即数04送入R3中

R3:

ANDA,#00

1000

将寄存器A清0

EM:

W:

SHRR1

寄存器R1带进位右移

ST:

A:

R:

A:

JC0D

200D

CF=1跳转到0D

2)除法程序运行的过程

7.设计结果说明

调试运行程序时是否出现问题,是否有重新调整指令/微指令系统设计的情况出现?

请在此做具体说明。

答:

出现了问题。

1)之前由于设计了ADDR?

,#II和SUBR?

,#II、SHLR?

、SHRR?

等这类指令,而这两些指令在执行过都需要先将立即数或者寄存器中的数保存到寄存器A中,再进行运算,运算完后再送回寄存器,这必然会改变寄存器A的值,也就是说如果运行这类指令就会改变累加器A的值,然而在设计乘法和除法的程序中都需要用到寄存器A来暂存一些中间数据,从而得不到正确的运行结果。

重新调整:

①为了尽量的减少这类指令改变寄存器A的情况,在最大范围内将这些指令设计成不改变其他寄存器的指令。

如原来的右移指令SHRR?

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

当前位置:首页 > 初中教育 > 其它课程

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

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