没有合适的资源?快使用搜索试试~ 我知道了~
计算机组成原理大型实验-实验报告及源代码.doc
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 26 浏览量
2021-10-06
08:11:50
上传
评论
收藏 130KB DOC 举报
温馨提示
试读
12页
计算机组成原理大型实验-实验报告及源代码.doc
资源推荐
资源详情
资源评论
- -
计算机组成原理大型实验任务书〔计算机 12 级 1、2、3 班和实验班〕
一、实验目的:
深入了解计算机各种指令的执行过程,以及控制器的组成,指令系统微程序设计的具体知识,进
一步理解和掌握动态微程序设计的概念;完成微程序控制的特定功能计算机的指令系统设计和调
试。
二、实验说明:
要进展这项大型实验,必须清楚地懂得:
(1) TEC-2 机的功能部件及其连接关系;
(2) TEC-2 机每个功能部件的功能与具体组成;
(3) TEC-2 机支持的指令格式;
(4) TEC-2 机的微指令格式,AM2910 芯片的用法;
(5) 已实现的典型指令的执行实例,即相应的微指令与其执行次序的安排与衔接;
(6) 要实现的新指令的格式与功能。
三、实验容:
选定指令格式、操作码,设计如下指令:
(1) 把用绝对地址表示的存单元 A 中的容与存单元 B 中的容相加,结果存于存单元 C 中。
指令格式:D4××,ADDR1,ADDR2,ADDR3 四字指令〔控存入口 100H〕
功能: [ADDR3]=[ADDR1]+[ADDR2]
(2) 将一通用存放器容减去某存单元容,结果放在另一存放器中。
指令格式:E0 DR SR,ADDR 〔SR,DR 源、目的存放器各 4 位〕双字指令〔控存入口 130H〕
功能: DR=SR - [ADDR]
(3) 转移指令。判断两个通用存放器容是否相等,假设相等那么转移到指定绝对地址,否那么顺
序执行。
指令格式:E5 DR SR,ADDR 双字指令〔控存入口 140H〕
功能: if DR==SR goto ADDR else 顺序执行。
设计:利用指令的 D 字段,即 IR
10~8
,令 IR
10~8
=101,即 CC=Z
那么当 DR==SR 时 Z=1,微程序不跳转,接着执行 MEMPC〔即 ADDR PC〕
而当 DR!=SR 时 Z=0,微程序跳转至 A4。
四、实验要求:
(1) 根据容自行设计相关指令微程序;〔务必利用非上机时间设计好微程序〕
(2) 设计测试程序、实验数据并上机调试。
(3) 设计报告容:包括 1、设计目的 2、设计容 3、微程序设计〔含指令格式、功能、设计及微程
序〕 4、实验数据〔测试所设计指令的程序及结果〕。〔具体要求安最新规为准〕
(4) 大型实验报告必须打印成册,各班班长收齐大型实验报告于 19 周星期五前,交芳教师办公室。
实验设计并分析:
第一条:把用绝对地址表示的存单元 A 中的容与存单元 B 中的容相加,结果存于存单元 C 中。
指令格式:D4××,ADDR1,ADDR2,ADDR3 四字指令〔控存入口 100H〕
功能: [ADDR3]=[ADDR1]+[ADDR2]
指令格式:
- - word.zl-
- -
D4XX
ADDR1
ADDR2
ADDR3
微程序:
PC→AR,PC+1→PC: 00000E00A0B55402
MEM→AR: 00000E00 10F00002
MEM→Q: 00000E00 00F00000
PC→AR,PC+1→PC: 00000E00 A0B5 5402
MEM→AR: 00000E00 10F0 0002
MEM+Q→Q: 00000E01 00E0 0000
PC→AR,PC+1→PC: 00000E00 A0B5 5402
MEM→AR: 00000E0010F0 0002
Q→MEM,CC#=0: 00290300 10200010
指令分析:
PC->AR, PC+1->PC
000
0
000
0
111
0
000
0
000
0
101
0
000
0
101
1
010
1
010
1
010
0
000
0
001
0
MEM->AR
000
0
000
0
111
0
000
0
000
0
000
1
000
0
111
1
000
0
000
0
000
0
000
0
010
0
MEM->Q
000
0
000
0
111
0
000
0
000
0
000
0
000
0
111
1
000
0
000
0
000
0
000
0
000
0
PC->AR, PC+1->PC
000
0
000
0
111
0
000
0
000
0
101
0
000
0
101
1
010
1
010
1
010
0
000
0
001
0
MEM->AR
000
0
000
0
111
0
000
0
000
0
000
1
000
0
111
1
000
0
000
0
000
0
000
0
010
0
MEM+Q->Q
000
0
000
0
111
0
000
0
000
1
000
0
000
0
111
0
000
0
000
0
000
0
000
0
000
0
PC->AR, PC+1->PC
000
0
000
0
111
0
000
0
000
0
101
0
000
0
101
1
010
1
010
1
010
0
000
0
001
0
MEM->AR
000
0
000
0
111
0
000
0
000
0
000
1
000
0
111
1
000
0
000
0
000
0
000
0
010
0
Q->MEM, CC#=0
002
9
000
0
001
1
000
0
000
0
000
1
000
0
001
0
000
0
000
0
000
0
000
1
000
0
- - word.zl-
- -
假设从地址[0828]开场执行微程序,此时程序计数器 PC 的值是 0829。因为运行程序的时候
[0829]和[0830]中存了加法的两个加数的存地址,所以要想方设法 1〕把这两个加数传到运算器的存
放器中,2〕在运算器中相加,3〕将结果输出到存单元[ADDR1]。以下分别进展分析。
1〕取每个加数要访问两次存,第一次是取得加数所在的存地址的值(MEM→AR), 第二次是取
得加数本身并保存在 Q 存放器中〔MEM→Q〕。注意,取第二个加数的时候,第一次仍是 MEM→AR,
而第二次 MEM+Q→Q 的同时也把加法给完成了,请见接下来的分析。
2〕相加的操作是 MEM+Q→Q。MEM 是从存中取得的第二个加数的值,左边的 Q 是刚刚取得
的第一个加数的值。他俩相加的和传给 Q 存放器,覆盖掉了 Q 存放器刚刚保存的值〔第一个加数〕。
3〕现在 Q 存放器中存有加法的运算结果,最后的工作是把这个结果写到存单元[ADDR1]中去。
如果 AR 或者 PC 指向[ADDR1]的话就好办了,难点在于现在 AR 已经到了[ADDR2]处,PC 已经到了
[ADDR2+1]处,而且又不知道如何让存放器的值减一。后来问同学,得到了解决方法:利用 IP 存放
器。IP 正好还呆在[ADDR1-1],即存地址[0828]。显然,让 IP+1 就得到了[ADDR1],即[0829]。
微指令是 IP+1→AR 以及 MEM→AR,这时 AR 的值为第一个加数所在的单元[ADDR1]。
现在 Q 的值是运算结果,AR 的值是运算结果要传给的存地址。显而易见,最后一步就是“存储
器写〞操作 Q→MEM。
其它要注意的地方:
1〕微程序中有两处 PC+1→PC,第一处是为了取得第二个加数所在的存地址,第二处是为了
把 PC 指向下一句,在这里是 RET,才能使程序正常完毕。
2〕程序最后要转向 A4H 执行后续处理程序。此处下地址的转换方法:将 A4H 从左到右用八
位二进制数写出,左边补两个“0”,右边加两个“0” 〔备用位 B45、44〕,得到 0010 1001 0000B,
再把这个十二位二进制数翻译成十六进制,结果是 290H。
3〕使用 Q 存放器的好处有:第一,不修改通用存放器 R0,R1 等,因为别的程序可能用到它们。第二,
程序易读、风格优美。
程序调试:
- - word.zl-
剩余11页未读,继续阅读
资源评论
gjmm89
- 粉丝: 13
- 资源: 19万+
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功