微程序设计
实验原理
模型计算机硬件系统的数据通路见理论课教材。CPU的字长为16位,内部采用16位宽的单总线结构,包括运算器和控制器两个部件。系统总线采用单总线结构,包括16位的数据总线DB、16位的地址总线AB和控制总线CB。CPU内部总线IB与系统总线之间通过DR、AR相联。主存储器的字长也是16位,并且按字编址,不支持字节访问。
微指令的编码方式采用字段直接编码方式,微指令格式见理论课教材。本实验只使用固定转移,即BM字段值固定为0。下面以一条指令为例,说明微程序的设计。假设要实现的指令如下:
MOV #5AA5H,R1
该指令的功能为将立即数#5AA5H传送给寄存器R1。
一条指令的完成需要经过几个阶段,包括取指阶段、取操作数阶段、执行阶段。为简化设计,这里只考虑完成这一条指令,源操作数寻址方式只考虑立即寻址,没有取目的操作数的过程,在执行阶段直接将源操作数送入目的寄存器R1。示例微程序见表 1。
微地址(H) |
微指令(H) |
微指令字段(H) |
微命令 |
||||||||||
F0 |
F1 |
F2 |
F3 |
F4 |
F5 |
F6 |
F7 |
F8 |
F9 |
||||
取指令 |
000 |
20010001 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
001 |
PCoe, ARce |
001 |
00029002 |
0 |
0 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
002 |
RD, DRces, PCinc |
|
002 |
48000003 |
2 |
2 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
003 |
DRoe, IRce |
|
取数 |
003 |
20010004 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
004 |
PCoe,ARce |
004 |
00029005 |
0 |
0 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
005 |
RD, DRces, PCinc |
|
005 |
500000006 |
2 |
4 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
006 |
DRoe, RYce |
|
存 |
006 |
8C000000 |
4 |
3 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
000 |
RYoe,GRSce |
预习要求
1)认真阅读、理解实验原理,掌握微程序设计方法。
2)编写“INC 0040H”的微程序,填入表 2。
微地址(H) |
微指令(H) |
微指令字段(H) |
微命令 |
||||||||||
F0 |
F1 |
F2 |
F3 |
F4 |
F5 |
F6 |
F7 |
F8 |
F9 |
||||
取指令 |
000 |
20010001 |
1 |
0 |
0 |
0 |
0 |
1 |
0 |
0 |
0 |
001 |
PCoe, ARce |
001 |
00029002 |
0 |
0 |
0 |
0 |
0 |
2 |
1 |
1 |
0 |
002 |
RD, DRces, PCinc |
|
002 |
48000003 |
2 |
2 |
0 |
0 |
0 |
0 |
0 |
0 |
0 |
003 |
DRoe, IRce |
|
取操作数 |
003 |
0 |
004 |
||||||||||
004 |
0 |
005 |
|||||||||||
005 |
0 |
006 |
|||||||||||
006 |
0 |
007 |
|||||||||||
007 |
0 |
008 |
|||||||||||
执行 |
008 |
0 |
009 |
||||||||||
009 |
0 |
00A |
|||||||||||
00A |
0 |
000 |
|||||||||||
| 可以利用实验系统提供的微指令编码器。 |
实验任务
运行示例微程序
(1)输入微程序
将表 1示例微程序通过调试软件输入到实验板的控存。
(2)输入主程序
首先将指令MOV #5AA5, R1翻译成机器码。查教材指令编码表,MOV指令编码的高4位是0001B,低12位是两个操作数的寻址方式,源操作数在前,目的操作数在后,各占6位,查教材寻址方式编码表,立即寻址的编码是011000B,R1寄存器寻址的编码是000001B,因此指令第一个字的二进制编码是0001-0110-0000-0001B,转换为16进制是1601H;指令的第二个字是立即数5AA5H。因此可以翻译出指令的机器码如下:
1601 5AA5 ; MOV #5AA5, R1
将1601 5AA5通过调试软件输入到实验模型机从0030H地址开始的主存单元。
(3)运行微程序
将有变化的数据记录在下表中(没有变化的留为空白)。分析运行结果是否正确。
微地址 |
微指令 |
IB |
PC |
AR |
IR |
DR |
TR |
Rn |
000 |
||||||||
001 |
||||||||
002 |
||||||||
003 |
||||||||
004 |
||||||||
005 |
||||||||
006 |
编写INC 0040H指令的微程序并运行
将预习完成的表 2微程序通过调试软件输入到实验板的控存。
查指令编码表翻译出指令的机器码:
_________ __________ ; INC 0040H
从主存的0030H单元开始,存放指令的机器码。在0040H单元预先写入操作数,如FFFFH。运行微程序,将数据记录在下表中。微程序运行结束后,刷新主存显示,查看0040H单元的内容为_______。分析运行结果是否正确。
微地址 |
|||||||||||
000 |
|||||||||||
001 |
|||||||||||
002 |
|||||||||||
003 |
|||||||||||
004 |
|||||||||||
005 |
|||||||||||
006 |
|||||||||||
007 |
|||||||||||
008 |
|||||||||||
009 |
|||||||||||
00A |