在执行ADD RO,R1(双操作数指令)的节拍(节拍状态为0100)中,应完成RORO+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~IR0的高低各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实现的就是SUB指令的" 减"运算操作,但不保存值运算结果,故应使I8~I6的值从011变成001,其他各控制信号的值均不变。MOV指令使用的是加运算,但操作数组合应选用A和O,故I2~I0应从001变成100,其他各控制信号的值均不变即可。

  有了上述说明,大家很容易设计出实现诸如ADC(带进位加)指令、"或"运算指令、异或运算指令等在本节拍需要使用的相应控制信号的取值。

  在学习上述内容时,强调比较透彻地学懂设计一条指令在一个节拍中所使用的控制信号取值的过程,剩下来的事情,重点是看清同类指令与这条指令在操作功能方面的区别,以及由此引发出来的所使用的控制信号取值的变化情况。最不可取的学习方式,是看完ADD指令之后,再以同样的精力看SUB指令,如此等等,其结果是花费很多时间和力气,还不一定能体会到所学知识的要点所在。