用于执行ADD RO, R1的微指令,完成RO←RO+R1。

  对运算器的控制,I2~IO必须为001,使数据组合为A、B,寄存器组的A 输出送ALU的R输入端,B 输出送ALU的S输入端;I5~I3必须为000,选择ALU执行加运算;I8~I6必须为011(或010),使ALU的运算结果保存到B 指定的寄存器RO中去;对微指令另外一些字段的内容,应使SST的值为001,以便把这一算术运算指令的特征标志位结果送入状态寄存器的C、Z、V、S各位;SCi应为00,SSH应为00,确保ALU的最低位进位信号为0值,运算结果没有移位操作功能。

  这里的另外一个问题,是如何提供ADD指令中用到的两个寄存器的编号,显然,这两个寄存器DR和SR的编号是由ADD指令的操作数地址字段给出的,对8位的TEC-3机来说,是IR3、IR2和IR1、IRO这4位的内容,故此时必须选择把IR3、IR2和IR1、IRO的各2位的输出分别送到Am2901的B口、A口引脚。

  对运算器之外其它功能部件的控制,无内存和I/O接口读写,应使/MIO为1且REQ和/WE例如为00;无专用寄存器接收操作,DC2编码应为000(NC),DC1编码为000,实现在无其他数据道送内部总线IB时,把数据开关内容送到IB。

  与ADD指令类似控制的还有SUB指令和AND指令,只需把其中用于控制ALU运算功能的I5~I3从000码(加运算)换成001码(减运算)和100码(与运算),其他各字段的值保持不变即可。

  与上述指令比较类似控制的还有CMP指令和MOV指令,CMP实现的就是AND指令的"与"运算操作,但不保存值运算结果,故应使I8~I6的值从011变成001,其他各字段均不变。MOV指令使用的是加运算,但操作数组合应选用A和O,故I2~I0应从001变成100,其他各字段均不变。

  有了上述说明,大家很容易设计出实现诸如ADC(带进位加)指令、"或"运算指令、异或运算指令等相应的微指令字的有关内容。

  再看用于执行SHR RO的微指令。对运算器的控制,应实现RO+O结是右移一位后写回RO,故可使I2~I0选011,I5~I3选000,I8~I6选101(不可选100,这会使Q寄存器也同时右移,不是我们所需求的)。此时不可忘记,还应使SCi为00,SSH为00(逻辑移位控制功能,即在I8~I6为100编码时,SSH为00就实现通用寄存器的逻辑移位控制功能,I8~I6为000~011编码时,SSH为00则无任何移位功能;SST应为101,使通用寄存器最高位移入0值,最低位移入状态触发器C中,对其他部件的控制应使DC1和DC2均为000。/MIO、REQ和/WE为100码。

  与SHR指令类似处理的是SHL指令,只需将I8~I6从101改成111,微指令字的其它各字段编码均保持不变即可。

  与上述两条指仅相类似的还有RCR和RCL两条指令,在进行扩展机器指令的实验中可由学生自己实现,它使标志触发器C与一个通用寄存器一起进行循环移位。只要将SSH从00变成01,微指令字的其他各字段的编码保持不变即可。