设计一条新指令,实现DR←[ADR],即将原来的扩展指令 LDRA DR,[ADR]变换为另外一个按照指定使用的操作码为34(H),指定微程序首地址为64(H),并在微程序控制器模拟软件上实现、调试正确。
时间: 2024-02-17 12:59:45 浏览: 154
为了实现DR←[ADR]指令,我们可以设计一个新的操作码,例如34(H),并在微程序控制器中为该操作码编写一个微程序,首地址为64(H)。下面是该微程序的伪代码:
```
地址 指令 控制信号
64(H) MAR←ADR MRW←1, I2~0←000, I8~6←000, I5~3←111
65(H) MDR←MDR MRW←1, I2~0←000, I8~6←000, I5~3←110
66(H) DR←MDR MRW←0, I2~0←000, I8~6←001, I5~3←000
```
注解:
- 第一条微指令将ADR写入MAR寄存器,同时将MRW设置为1,表示从内存中读取数据到寄存器。I2~0为000,表示不进行ALU计算;I8~6和I5~3分别为000和111,表示将MAR寄存器的值加载到R7寄存器(ADR的地址)。
- 第二条微指令将内存中地址为ADR的数据读入MDR寄存器,同时将MRW设置为1,表示从内存中读取数据到寄存器。I2~0为000,表示不进行ALU计算;I8~6和I5~3分别为000和110,表示将MDR寄存器的值加载到R6寄存器。
- 第三条微指令将MDR寄存器的值写入DR寄存器,同时将MRW设置为0,表示将寄存器的值写回到内存。I2~0为000,表示不进行ALU计算;I8~6和I5~3分别为001和000,表示将DR寄存器的值写回到内存中地址为ADR的位置。
在微程序控制器模拟软件上实现该微程序,具体的实现方式可能因软件不同而有所不同。一般来说,可以通过构建微程序控制器的控制信号表或状态转移图的方式来实现该微程序,并通过模拟内存和寄存器等硬件来模拟CPU的执行过程。在调试时,可以逐条微指令地执行程序,并观察内存和寄存器的变化,以确保程序的正确性。
阅读全文