前言
我们计组考试要写微指令二进制的编码格式,我自己整理了一下,下面的用语有些地方不准确,如“24位微指令”和“23位微指令”,这是我随口称呼的,只是为了区分这两种微指令格式。自己在复习的时候也查询了很多帖子,看了很多文章,才把微指令二进制的编写弄明白,希望以下内容能够帮到你。
一、24位微指令
(一) 格式
这里的M23,M22内容无法确定,不知道写啥,也不知道什么含义,写0吧
WR:1表示允许写入
RD:1表示允许读取
IOM:启用输入/输出模块
S3—S0:对应运算器逻辑功能表的内容
A,B,C这三个译码字段,看具体题目给的表格
MA5—MA0:表示后续地址,用前2位表示地址的第一位,后4位表示地位的后一位
如:后续地址为32,MA5—MA0的值为 11 0010
74181ALU 运算器/逻辑运算功能表,如下
(二) 例题
如下是A,B,C字段的译码内容和微程序流程图,根据流程图按照微指令格式变成二进制微代码
参考答案:
这里我就直接贴图上去了
提一下难点:
IN —>R0,表示读取数据到R0
R0 —>OUT,表示将R0里的数据写出
IN和OUT是汇编语言,读用IN,写用OUT
这里的高五位就是指M23,M22,WR,RD,IOM
二、23位微指令
(一) 格式
LDR1:表示将最终结果打入R1中
LDR2,LDR3同理可得,这三个值是互斥的
R1—>X :将R1的值导入X中(X+Y嘛,导入第一个加数)
R1—>Y:导入第二个加数中
其他同理可得
+:加法运算
M:逻辑运算
-:减法运算
RD:表示读,如RD(D'),表示从D'中读取数据
LDDR':选中数据寄存器R'
LDIR':选中指令寄存器
LDAR':选中地址寄存器
PC+1:程序计数器加1
P1:取值为1时,则后有判断(就是看有没有选择分支啊)
P2:取值为1时,判断后面是否有进位
直接地址:就是下一条指令的地址
其实在写指令时,RD,LDDR',LDIR',LDAR,PC的取值可以直接看流程图,流程图的那条指令中明确写到了这些,那就把那个位置为1就行了,无脑操作,没提到就置为0。
(二) 例题
这里流程图和书上的图不一样,注意!!!
也可以看书,P166—P168,书上有答案的
第一条微指令(完成取指令和判断转移微指令)的二进制编码是
000 000 000 000 11111 10 0000
第二条微指令 R1+R2→R2 的二进制编码是
010 100 100 100 00000 00 1001
第三条微指令 R2+R3(6)→R2 的二进制编码是
010 001 001 100 00000 01 0000
第四条微指令 R2-R3(6)→R2 的二进制编码是
010 001 001 001 00000 00 0000