了解TEC-2机的结构和基本的指令知识很重要,不理解而只知一味地照抄是学不到知识的。建议先阅读课件,再结合例子进行理解。以下例子只供参考,有些地方可以合并,具体的操作仍需见仁见智。理解并学会使用微指令分析器是解决问题的关键。
总体思路:
设计微程序→将微码存放于内存中→将微码加载到微控制存储器中→输入程序,运行新指令,以检验微程序的正确性
补充知识:
指令格式: 操作码 条件码 目的寄存器(DR) 源寄存器(SR)
||
唯一指定一条指令
例:第一题: D4 2 0
PC:存放内存单元的地址。(随着指令运行时递增)
反汇编得到指令的具体格式。
14号命令:与/CC条件无关,顺序执行,即执行紧跟在本条微指令后面的那条微指令,由μPC提供微地址。
3号命令:条件转移。/CC=1时,顺序执行,否则按当前微指令下地址字段中地址D转移。
D数据来源可分为:
①16个钮子开关,用于手拨方式输入的数据或地址②运算器的16位输出;③外部数据总线传送来的数据;④中断向量寄存器的输出;⑤状态寄存器(C-进/借位、Z-运算结果、V-溢出、S-符号 4个标志位及中断优先级);⑥指令寄存器的低位字节。
第一题:
将内存单元数据DATA减去用绝对地址ADDR表示的内存单元的内容,结果保存到由DR内容指定的内存单元中
1.指令格式
指令格式: |
D4 |
DR |
X |
|
ADDR |
||
|
DATA |
2.指令功能
功能: DATA- [ADDR] → [DR]
3.设计分析
根据指令的功能和指令格式,先读取地址ADDR单元内容暂时放置于Q寄存器中, 然后PC+1→PC,并将PC的值赋给AR。MEM中存放的数据是DATA。此时只需要实现MEM-Q→Q,并将DR送给AR。只要将Q寄存器内容写入存储器MEM就可以完成指令功能。最后,微程序中必须实现PC+1→PC操作,才能确保PC的正确走向。
4. 微程序
100:PC→AR,PC+1→PC: 0000 0E00 A0B5 5402
101:MEM→AR: 0000 0E00 10F0 0002
102:MEM→Q: 0000 0E00 00F0 0000
103:PC→AR,PC+1→PC: 0000 0E00 A0B5 5402
104:MEM-Q→Q: 0000 0E01 02E0 0000
105:DR→AR: 0000 0E00 90B0 000A
106:Q→MEM,CC#=0: 0029 0300 1020 0010
5. 加载到微控存程序段
说明:微码存放在900H(或某内存单元)开始的内存单元中
>A0800↙
0800:MOV R1,900 ;微码在内存中的首地址
0802:MOV R2,7 ;微指令条数
0804:MOV R3,100 ;微码在微控制存储器中的首地址
0806:LDMC ;加载微码指令,将微码指令加载到微控制存储器中
0807:RET
0808:
>A0800↙
6.运行程序段
>A0820↙
0820:MOV R0,0011
0822:MOV [0890],R0
0824:MOV R2,0891
0826:NOP
0827:NOP
0828:NOP
0829:RET
>E0826↙
然后输入以下内容:
D420 0890 1111
7.运行结果
>G0820↙
>D0891↙
0891:1100
第二题:
将绝对地址ADDR单元的内容与[SR]内容相加,结果保存到DR寄存。
1. 指令格式
指令格式: |
D4 |
DR |
SR |
|
ADDR |
2. 指令功能
功能: [ADDR] + [SR] → DR
3.设计分析
根据指令的功能和指令格式,读取地址ADDR单元内容暂时放置于Q寄存器中,将SR单元内容赋给AR,MEM中存放着SR的数据。此时只需要实现Q+MEM,并将结果赋给DR就可以完成指令功能。最后,微程序中必须实现PC+1→PC操作,才能确保PC的正确走向。
4.微程序
100:PC→AR,PC+1→PC: 0000 0E00 A0B5 5402
101:MEM→AR: 0000 0E00 10F0 0002
102:MEM→Q: 0000 0E00 00F0 0000
103:SR→AR: 0000 0E00 90C0 0082
104:MEM+Q→Q: 0000 0E01 00E0 0000
105: Q→DR,CC#=0: 0029 0300 B020 0008
(104和105可以合并成MEM+Q→DR,CC#=0)
5.加载到微控存程序段
说明:微码存放在900H(或某内存单元)开始的内存单元中
>A0800↙
0800:MOV R1,900 ;微码在内存中的首地址
0802:MOV R2,6 ;微指令条数
0804:MOV R3,100 ;微码在微控制存储器中的首地址
0806:LDMC ;加载微码指令,将微码指令加载到微控制存储器中
0807:RET
0808:
>A0800↙
6. 运行程序段
>A0820↙
0820:MOV R0,0011
0822:MOV [0890],R0
0824:MOV R0,0100
0826:MOV [0891], R0
0828:MOV R3, 0891
082A:NOP
082B:NOP
082C:RET
>E082A↙
然后输入以下内容:
D413 0890
7.运行结果
>G0820↙
>RR1↙
0111:-

