微程序控制和设计知识分享.docx
《微程序控制和设计知识分享.docx》由会员分享,可在线阅读,更多相关《微程序控制和设计知识分享.docx(11页珍藏版)》请在冰豆网上搜索。
微程序控制和设计知识分享
微程序控制和设计
成绩:
实验报告
课程名称:
计算机组成原理实验
实验项目:
微程序控制和设计
姓名:
舒鹏
专业:
网络工程
班级:
11-3
学号:
1104020321
计算机科学与技术学院
实验教学中心
2013年6月24日
实验项目名称:
微程序控制和设计
1、实验目的
综合运用所学计算机原理知识,设计微程序实现题目规定的指令。
2、实验内容
在做综合实验时,可以用COP2000计算机组成原理实验软件输入、修改程序,汇编成机器码并下载到实验仪上,由软件控制程序实现单指令执行、单微指令执行、全速执行,并可以在软件上观察指令或微指令执行过程中数据的走向、各控制信号的状态、各寄存器的值。
COP2000软件的使用方法见第七章“COP2000集成开发环境使用”。
也可以用实验仪自带的小键盘和显示屏来输入、修改程序,用键盘控制单指令或单微指令执行,用LED或用显示屏观察各寄存器的值。
实验仪上的键盘使用方法见第六章“实验仪键盘使用”。
在用微程序控制方式做综合实验时,在给实验仪通电前,拔掉实验仪上所有的手工连接的接线,再用8芯电缆连接J1和J2,控制方式开关拨到“微程序控制”方向。
若想用COP2000软件控制组成原理实验仪,就要启动软件,并用快捷图标的“设置”功能打开设置窗口,选择实验仪连接的串行口,然后再按“连接COP2000实验仪”按钮接通到实验仪。
微指令格式:
模型机的指令码为8位,根据指令类型的不同,可以有0到2个操作数。
指令码的最低两位用来选择R0-R3寄存器,在微程序控制方式中,用指令码做为微地址来寻址微程序存储器,找到执行该指令的微程序。
而在组合逻辑控制方式中,按时序用指令码产生相应的控制位。
在本模型机中,一条指令最多分四个状态周期,一个状态周期为一个时钟脉冲,每个状态周期产生不同的控制逻辑,实现模型机的各种功能。
模型机有24位控制位以控制寄存器的输入、输出,选择运算器的运算功能,存储器的读写。
2)完成对R0,R1,R2,R3这四个寄存器的排序工作,按R0-R3降序排序。
3)排序采用冒泡排序法,分别对于R0和R1,R1和R2,R2和R3,三个关系进行判断。
若一个关系的前者小于后者,则通过stack寄存器交换两者的值,若前者大于后者,则继续进行下一个关系的大小判断。
三个关系依次判断一遍之后,可以保证四个数的最小的数在R3中。
再对于三个关系依次判断一遍之后,可以保证第二小的数在R2中,再对于三个关系依次判断一遍之后,可以保证第三小的数在R1中,此时最大的数就在R0中,排序完成。
4)循环执行了三次,用一个数记住循环计数,这个数存在EM中。
每次执行一次循环之后就减1,当循环计数为0时,程序结束。
指令/微指令表:
指令表
3、实验用设备仪器及材料
COP2000实验仪、导线若干、系统计算机。
4、实验原理
在综合实验中,模型机作为一个整体来工作的,所有微程序的控制信号由微程序存储器uM输出,而不是由开关输出。
在做综合实验之前,先用8芯电缆连接J1和J2,这样实验仪的监控系统会自动打开uM的输出允许,微程序的各控制信号就会接到各寄存器、运算器的控制端口。
此综合实验使用的指令是模型机的缺省指令/微指令系统。
6、实验结果分析
实验1:
数据传送实验/输入输出实验
1.在COP2000软件中的源程序窗口输入下列程序
MOVA,#12H
MOVA,R0
MOVA,@R0
MOVA,01H
IN
OUT
END
2.将程序另存为EX1.ASM,将程序汇编成机器码,反汇编窗口会显示出程序地址、机器码、反汇编指令。
程序地址
机器码
反汇编指令
指令说明
00
7C12
MOVA,#12
立即数12H送到累加器A
02
7D12
MOVA,RO
将R0中的内容送到累加器A
04
7E12
MOVA,@R0
将R0中的内容作为地址送到A
06
7F
MOVA,01H
将地址01H中的内容送到A
3.按快捷图标的F7,执行“单微指令运行”功能,观察执行每条微指令时,寄存器的输入/输出状态,各控制信号的状态,PC及uPC如何工作。
给出EX1.ASM程序跟踪结果。
实验2:
数据运算实验(加/减/与/或)
1.在COP2000软件中的源程序窗口输入下列程序
ADDCA,R1
SUBA,@R0
ANDA,#55H
ORA,02H
END
2.将程序另存为EX2.ASM,将程序汇编成机器码,反汇编窗口会显示出程序地址、机器码、反汇编指令。
程序地址
机器码
反汇编指令
指令说明
00
21
ADDCA,R1
累加器A的值加上寄存器R1加进位
02
22
SUBA,@R0
累加器A的值减去R0地址中的值
04
23
ANDA,#55H
累加器A的值与立即数55H按位与
06
24
ORA,02H
累加器A的值与02H中的值按位或
3.按快捷图标的F7,执行“单微指令运行”功能,观察执行每条微指令时,寄存器的输入/输出状态,各控制信号的状态,PC及uPC如何工作。
给出EX2.ASM程序跟踪结果。
4.在了解数据运算的原理,可以加上一些数据传输指令给累加器A或寄存器R?
赋值,再运算,并观察运算结果。
练习:
综合运用实验1与实验2的相关功能操作完成任务。
将立即数44H,77H,33H,55H分别送入寄存器R0,R1,R2,R3中,立即数11H送入累加器A中,并完成下面的运输操作:
MOVR0,#44H
MOVR1,#77H
MOVR2,#33H
MOVR3,#55H
MOVA,#11H
ADDCA,R1
SUBA,@R1
ANDA,#55H
ORA,02H
IN
OUT
END
1)按快捷图标的F7,执行“单微指令运行”功能,观察执行下面每条微指令时,寄存器的输入/输出状态,各控制信号的状态,PC及uPC如何工作。
给出EX2.ASM程序跟踪结果。
ADDCA,R1
SUBA,@R1
ANDA,#55H
ORA,02H
5)实现寄存器R0,R1,R2,R3的数据相加。
MOVR0,#44H
MOVR1,#77H
MOVR2,#33H
MOVR3,#55H
MOVA,R1
ADDA,R2
ADDA,R3
ADDA,R0
IN
OUT
END
试验二:
对于存放在R0~R3中的数进行排序,有序的存回R0~R3。
分析:
对待比较两个数采用减法比较大小,然后按照顺序存回。
针对排序过程可采用不同排序方法,如:
冒泡排序,快速排序等。
并可以查看不同排序方法在实验仪器上的效率。
这个实验过程涉及到数大小比较,数据存储,程序跳转控制,这些过程均能在COP2000计算机组成原理实验仪上完成。
在数据结构中,我们学习了对数字排序的不同算法,并详细学习了算法复杂度。
但是针对我们使用的计算机不能体会到不同算法在时间上的不同。
此次试验能够具体体会算法之间在时间复杂度上的区别。
有一定的实验意义。
综上所述:
本次试验目标至少做出一种排序方法,并在此基础之上比较各种排序方法的效率。
试验代码为:
MOVR0,#37H
MOVR1,#17H
MOVR2,#29H
MOVR3,#41H
MOVA,#03H
MOV02H,A
LOOP:
MOVA,R0
SUBA,R1
JCS0
M1:
MOVA,R1
SUBA,R2
JCS1
M1:
MOVA,R2
SUBA,R3
JCS2
M3:
SUBA,#01H
JCS3
JMPLOOP
S0:
MOVA,R0
PUSHR0
MOVR1,A
POPR1
DCY
JMPM1
S1:
MOVA,R1
PUSHR1
MOVR2,A
POPR2
DCY
JMPM2
S2:
MOVA,R2
PUSHR2
MOVR3,A
POPR3
DCY
JMPM3
S3:
IN
OUT
END