实验报告
1、实验名称:微程序控制器实验报告
2、实验目的:通过看懂教学计算机中已经设计好的并正常运行的数条基本指令的功能、格
式和执行流程,然后自己设计几条指令的功能、格式和执行流程,并在教学计算机上实现、
调试正确。其最终要达到的目的是:1、深入理解计算机微程序控制器的功能、组成知识;2、
深入的学习计算机各类典型指令的执行流程;3、对指令格式、寻址方式、指令系统、指令
分类等建立具体的总体概念;4、学习微程序控制器的设计过程和相关技术。
3、实验内容:
综合型实验 1:
(1)思考题:
1. 在进行上面的实验时,你可能已经发现不同的指令在执行的过程中都会经过
相同的微地址,也就是说,不同指令的微程序也有公用部分。请你找出这些公共
的微指令,说明它们所做的工作。
答:(1)微址为 00 下址为 00 的微指令,所做的工作是:给出微程序首地址并
在启动时执行。
(2)微址为 01 下址为 00 的微指令,所做的工作是:将 PC 寄存器中的内容送
入地址寄存器中,PC 自加 1。
(3)微址为 30 下址为 3A 的微指令,所做的工作是:完成检查中断检查。
2. 总结机器指令和微程序之间的关系
答:(1)一条机器指令对应一个微程序,这个微程序由若干条微指令构成。即一
条机器指令所完成的操作划分成若干条微指令来完成,由微指令编成的微程序进
行解释和执行
(2)从指令与微指令,程序与微程序,地址与微地址的一一对应关系上看,前
者与内存储器有关,而后者与控制存储器有关。
(3)机器指令是把程序员编写的程序经编译以后成为机器能执行的以二进制码
形式表示的指令;在微程序控制的计算机中通过执行一串微指令完成一条指令的
功能
3. 总结指令的一般流程
设计型实验 1:
设计几条指令的功能、格式和执行流程,设计每条微指令各字段的具体编码值,包括控
制码的各字段、下地址字段、形成下址用到的条件码。可以从给出的 19 条扩展指令中
任意选择,例如 ADC、STC、LDRA、CALR 等指令,当然也可以设计与实现其它的指
令,包括原来已经实现的基本指令(要变换为另外一个指令操作码)或自己确定的指令。
写出指令格式、指令功能和执行流程及对应的微程序。扩展几条指令,确定各步的控制
信号。
指令 操作功
能
C=1
DR+SR+
CF→DR
PC→AR
PC+1→
PC
STC
ADC
LDRA
DR,
[ADR
]
微
址
57
50
下
址
30
30
CI3~0
0011
0011
SCC
3~0
0000
0000
MR
W
100
100
I2~0
I8~6
I5~3 B 口 A 口 SST
000
001
001
011
000
000
0000
1000
0000
1000
100
001
SSH
SCI
000
010
DC
2
000
000
DC1
000
000
5B 00
1110
0000
100
011
010
000
0101
0101
000
001
011
000
MEM →
5C 1C
0011
0000
001
111
001
000
0000
0000
000
000
011
000
AR
MEM → 1C 30
0011
0000
001
111
011
000
1000
0000
000
000
000
000
DR
设计型实验 2
设计一条新的机器指令,该指令的功能是把一个通用寄存器的内容与一个内存单
元 ADR1 中的内容相或,结果保存到另外一个内存单元 ADR2 中,即:[ADR2]
[ADR1] ∨ SR
1、写出你实验课的分组组号;
36
2、写出你组要求使用的操作码和微程序首地址;
56(H)
66(H)
3、写出新指令的指令格式;
双字长指令:
1-8 位操作码:0101 0001;
9-12 位 DR:0000;
13-16 位 SR:0000;
17-32 位 ADR1:0000 0000 0000 0000;
33-48 位 ADR2:0000 0000 0000 0000.
4、写出新指令的每一个执行步骤的说明;
(1)、SR->Q: 将 SR 寄存器中的数据转移到 Q 寄存器中;
(2)PC->AR,PC+1->PC: 读指令(ADR1);
(3)、MEM->AR: 读内存,输出 MEM 的内容(【ADR1】)到 AR 寄存器;
(4)、MEM+Q->Q: 将 MEM 中的数据(【ADR1】)与 Q 寄存器中数据(即 SR 的
值)求和,将结果存在 Q 寄存器中;
(5)、PC->AR,PC+1->PC: 读指令(ADR2);
(6)、MEM->AR: 读内存,输出 MEM 的内容(【ADR2】)到 AR 寄存器;
(7)、Q->MEM:将 Q 最终的值送入内存(ADR2)中。
5、写出完整的微程序;
指
操作功能 微
下
令
址
址
CI3~
0
SCC
3~0
MR
W
I2~0
I8~6
I5~3 B 口 A 口 SST
SSH
Sci
DC
2
DC1
1
2
3
4
5
SR->Q
PC->AR,
PC+1->P
C
MEM->A
R
MEM V
Q ->Q
PC->AR,
PC+1->P
66
67
00
00
1110
0000
100
100
000
000
0000
0000
000
000
000
000
1110
0000
100
011
010
000
0101
0101
000
001
011
000
68
00
1110
0000
001
111
001
000
0000
0000
000
000
011
000
69
00
1110
0000
001
110
000
011
0000
0000
001
000
000
000
6a
00
1110
0000
100
011
010
000
0101
0101
000
001
011
000
C
6
7
6b
MEM->A
R
Q->MEM 6c
00
30
1110
0000
001
111
001
000
0000
0000
000
000
011
000
0011
0000
000
010
001
000
0000
0000
000
000
000
001
6、写出对每一条微指令控制信号和下地址的解释说明;
(1) SR->Q
微址(66H):入口地址为 66H;
下址(00H):给出监控程序的首地址和禁止中断,在教学机加点启动时被
执行一次,正常运行期间不再使用;
CI3-0(1110):顺序执行;
SCC3-0(0000):必转;
MRW(100):无读写,既不读写内存也不读写接口;
I2-0(000):SR 的数据来源是 A 口,另一个数据来源是 Q;
I8-6(000):输出 SR 寄存器的值到 Q 寄存器;
I5-3(000):加法功能;
SST(000):CZVS 的值保持不变;
SSH SCI(000):ADD;
B 口(0000)A 口(0000):R0,R0;
DC2(000):不操作;
DC1(000):送开关内容到内部总线。
(2) PC->AR,PC+1->PC:
微址(67H):入口地址为 67H;
下址(00H):给出监控程序的首地址和禁止中断,在教学机加点启动时被
执行一次,正常运行期间不再使用;
CI3-0(1110):顺序执行;
SCC3-0(0000):必转;
MRW(100):无读写,既不读写内存也不读写接口;
I2-0(011):B 口读入 PC 的值;
I8-6(010):A 口与输出 Y 相连;
I5-3(000):加法功能;
SST(000):CZVS 的值保持不变;
SSH SCI(001):进位;
B 口(0101):PC 为 R5,B 口内容+1 送到 B 口;
A 口(0101):输出 A 口内容到 AR;
DC2(011):地址寄存器接收;
DC1(000):送开关内容到内部总线。
(3) MEM->AR
微址(68H):入口地址为 68H;
下址(00H):给出监控程序的首地址和禁止中断,在教学机加点启动时被
执行一次,正常运行期间不再使用;
CI3-0(1110):顺序执行;
SCC3-0(0000):必转;
MRW(001):内存读;
I2-0(111):数据来源是 MEM;
I8-6(001):只输出 MEM,没有送到 B 口和 Q;
I5-3(000):加法功能;
SST(000):CZVS 的值保持不变;
SSH SCI(000):ADD;
B 口(0000):R0;
A 口(0000):R0;
DC2(011):地址寄存器接收;
DC1(000):送开关内容到内部总线。
(4) MEM|Q->Q
微址(69H):入口地址为 69H;
下址(00H):给出监控程序的首地址和禁止中断,在教学机加点启动时被
执行一次,正常运行期间不再使用;
CI3-0(1110):顺序执行;
SCC3-0(0000):必转;
MRW(001):内存读;
I2-0(110):执行或操作;
I8-6(000):输出送到 Q 寄存器;
I5-3(011):或运算;
SST(000):CZVS 的值保持不变;
SSH SCI(000):ADD;
B 口(0000):R0;
A 口(0000):R0;
DC2(000):不操作;
DC1(000):送开关内容到内部总线。
(5) PC->AR,PC+1->PC
微址(6aH):入口地址为 6aH;
下址(00H):给出监控程序的首地址和禁止中断,在教学机加点启动时被
执行一次,正常运行期间不再使用;
CI3-0(1110):顺序执行;
SCC3-0(0000):必转;
MRW(100):无读写,既不读写内存也不读写接口;
I2-0(011):B 口读入 PC 的值;
I8-6(010):A 口与输出 Y 相连;
I5-3(000):加法功能;
SST(000):CZVS 的值保持不变;
SSH SCI(001):进位;
B 口(0101):PC 为 R5,B 口内容+1 送到 B 口;
A 口(0101):输出 A 口内容到 AR;
DC2(011):地址寄存器接收;
DC1(000):送开关内容到内部总线。
(6)MEM ->AR
微址(6bH):入口地址为 6bH;
下址(00H):给出监控程序的首地址和禁止中断,在教学机加点启动时被
执行一次,正常运行期间不再使用;
CI3-0(1110):顺序执行;
SCC3-0(0000):必转;
MRW(001):内存读;
I2-0(111):数据来源是 MEM;
I8-6(001):只输出 MEM,没有送到 B 口和 Q;
I5-3(000):加法功能;
SST(000):CZVS 的值保持不变;
SSH SCI(000):ADD;
B 口(0000):R0;
A 口(0000):R0;
DC2(011):地址寄存器接收;
DC1(000):送开关内容到内部总线。
(7)Q->MEM
微址(6cH):入口地址为 6cH;
下址(30H):中断执行入口地址;
CI3-0(0011):中断程序到下址 30;
SCC3-0(0000):必转;
MRW(000):写内存;
I2-0(010):读寄存器 Q 中的数据;
I8-6(001):只输出 MEM,没有送到 B 口和 Q;
I5-3(000):加法功能;
SST(000):CZVS 的值保持不变;
SSH SCI(000):ADD;
B 口(0000):R0;
A 口(0000):R0;
DC2(000):不操作;
DC1(001):送 ALU 输出到内部总线。
7、要在模拟程序上实现扩展和调试验证。给出进行扩展指令和验证调试过程的
截图;(注意:实验课不同分组的操作码和微程序首地址不同)
4、实验体会及总结
这次实验让我收获颇多。在试验过程中遇到了很多问题,比如刚开始的时候
不是很明白操作码、控制信号是怎样影响指令的执行,以及各种控制信号的具体
含义。但通过查阅实验指导书,与同学进行讨论之后最终顺利的完成了实验。在
整个设计、调试的过程中,我对微程序控制器的理解更加深入,对其整体架构、
工作流程有了新的认识。我相信,这对于我理解计算机组成原理理论课很有帮助,
也让我今后的学习充满信心。