(6)根据微指令格式设计一段减法指令SUB [ADDR] 的微程序,减法指令的功能是R0 - [ADDR] → R0
时间: 2023-06-18 07:05:56 浏览: 326
假设微指令格式为:OPCODE ADDR CTRL,其中:
- OPCODE:操作码,用于指定执行的操作。
- ADDR:地址码,用于指定操作数的地址。
- CTRL:控制码,用于控制微操作的执行。
设计的微程序如下:
微地址 | OPCODE | ADDR | CTRL | 微操作
--------|--------|----------|----------------|------------------
0 | FETCH | PC | MI, RO | MAR ← PC, MBR ← M[MAR], PC ← PC + 1
1 | DECODE | MBR | RO | IR ← MBR
2 | | | | 如果 IR[15:12] ≠ 0001,转到微地址 6
3 | SUB | MBR[11:0] | RO, AO, BI, CO | MAR ← MBR[11:0], MDR ← M[MAR], AC ← NOT MDR + 1
4 | | | | 如果 IR[11] = 0,转到微地址 5;否则,转到微地址 4
5 | | | | R0 ← AC,转到微地址 7
6 | | | | 非减法指令,结束执行
7 | | | | 执行完成,结束执行
注解:
1. 第 0 行微操作为取指令操作,将 PC 中的地址送到 MAR,将该地址存储器中的指令送到 MBR,然后将 PC 值加 1。
2. 第 1 行微操作为译码操作,将 MBR 中的内容送到 IR。
3. 第 2 行微操作为判断操作,如果 IR 的操作码不是 SUB,说明该指令不是减法指令,结束执行;否则继续执行。
4. 第 3 行微操作为取操作数操作,将 MBR 中的地址码送到 MAR,将该地址存储器中的值送到 MDR,然后将 MDR 取反加 1 的结果送到 AC 寄存器中。
5. 第 4 行微操作为判断操作,如果 IR 的第 11 位是 0,说明该指令的第二个操作数是直接数,将结果存储到 R0 中,然后结束执行;否则继续执行。
6. 第 5 行微操作为存储结果操作,将 AC 寄存器中的值送到 R0 中。
7. 第 6 行微操作为结束操作,表示该指令执行完成。
阅读全文