TEC-2实验计算机微程序控制器实验二
实验内容:
设计一条指令,实现对存放在DR寄存器中低位字节的8位有符号补码数进行符号扩展(即将其变为16位的同值的补码数),结果保存在内存ADDR单元中。
实验目的
进一步了解和掌握计算机各部分的组成及相互关系;
了解微指令的执行过程,掌握微程序的设计方法;
理解动态微程序设计的概念;
进一步认识和掌握计算机各指令的执行过程,搞清楚计算机的运行原理。
### TEC-2实验计算机微程序控制器实验二
#### 实验背景与目标
本实验针对的是TEC-2实验计算机微程序控制器的操作实践。实验的主要目的是让学生深入理解计算机硬件各个组成部分之间的相互作用以及如何通过微程序来控制这些硬件组件的工作流程。通过本实验的学习,学生不仅能够了解到微指令的执行过程,还能够掌握微程序的设计方法,特别是动态微程序设计的概念,进而更加清晰地认识到计算机指令执行的过程及其运行的基本原理。
#### 实验内容概述
本次实验的具体任务是设计一条指令,该指令的作用是对存放在数据寄存器(DR)中的8位有符号补码数进行符号扩展,即将其转换为16位的同值补码数,并将结果存储在指定的内存地址(ADDR)单元中。这一任务的完成涉及到了对计算机内部寄存器操作、位运算等技术的应用。
#### 实验步骤与细节
**1. 指令格式**
指令格式定义如下:
```
D4 DR X ADDR
```
其中,“D4”代表指令码,“DR”指明了数据来源是数据寄存器,“X”表示执行特定的操作(在此例中为符号扩展),“ADDR”则是操作结果的目标内存地址。
**2. 指令功能**
指令功能描述如下:
```
DR符号扩展→[ADDR]
```
这表示将DR寄存器中的8位有符号补码数扩展为16位的同值补码数,并将结果存储在内存ADDR单元中。
**3. 设计分析**
为了实现这一指令的功能,需要进行以下步骤:
- **对DR进行9次循环左移**:目的是将DR寄存器中的最高位(符号位)移动到最低位。
- **将标志位C设为RAM15**:RAM15为内存单元的最高位,这一操作确保了在后续的位移过程中符号位保持不变。
- **循环右移9次**:在右移的过程中,C标志位始终保持不变,以保证符号位正确复制到高8位。
**4. 微程序**
根据上述步骤,可以设计出如下微程序:
- **100:** DR左移1次,并设置循环8次 `0001C406F0B00008`
- **101:** 左移8次,C值为RAM15 `00000806F0B00008`
- **102:** 右移1次,并设置循环8次 `0001C400D0B00108`
- **103:** 右移8次,C写入最高位 `0001C800D0B00108`
- **104:** PC→AR,PC+1→PC `00000E00A0B55402`
- **105:** MEM→AR `00000E0010F00002`
- **106:** DR→MEM, CC#=0 `0029030010300018`
**5. 加载到微控存程序段**
将上述微程序加载到微控存(微代码存储区)中,微码通常会存放在900H或其它指定的内存单元中。
**6. 运行程序段**
通过一系列的操作,包括设置初始值、加载指令等步骤,最终使得指令得以执行。
**7. 运行结果**
运行结果验证了符号扩展的成功,输出结果为`FFCD`。
#### 思考题解析
此外,实验还包括一个思考题,要求设计一条指令,当`DR >= SR`时,`OFFSET + IP → PC`;当`DR < SR`时,则`ADDR → PC`。
**1. 指令格式**
指令格式定义如下:
```
D4 DR SR OFFSET ADDR
```
**2. 指令功能**
指令功能描述如下:
```
若DR >= SR,则OFFSET + IP → PC;
若DR < SR,则ADDR → PC。
```
**3. 设计分析**
- 将`DR`与`SR`相减,然后通过判断结果的符号位来决定后续动作。
- 如果`DR >= SR`,则执行`OFFSET + IP → PC`;如果`DR < SR`,则执行`ADDR → PC`。
- 为实现这两种不同的路径,可以通过条件跳转实现逻辑分支。
**4. 微程序**
- **100:** DR - SR `00000E1191900088`
- **101:** /CC = /S,3#, 104 `004103B090700000`
- **102:** PC → AR `00000E0090B05002`
- **103:** MEN + IP → PC, /CC = 0, 3#, A4H `0029030020D65000`
- **104:** PC + 1 → AR `00000E0090B05402`
- **105:** MEN → PC, /CC = 0, 3#, A4H `0029030020F05000`
通过以上实验内容的详细解析,我们可以看到微程序控制器是如何被用来实现特定指令集的,并且通过实际操作加深了对计算机组成原理的理解。