先看对I/O接口的读写控制。I/0端口地址00选中约定的串行接口1,即Intel 8251接口芯片。1N指令用于从串行口取数,故为读操作,因此/MIO REQ /ME应011码,表明有入/出操作,I/O工作,读操作功能,并使双向三态门电路74LS245处于正常工作方式,信息传递方向为从外部数据总线DB传向内部数据总线IB,则从8251接口芯片中读出来的8位数据出现在IB。DC1和DC2码都为000码(硬件已保证此时不会把开关内容送IB)。

  对运算器的控制,则表现为应将出现在IB(ALU的D数据输入端)上的内容写进RO寄存器(IN指合默认使用RO寄存器作为接收或送给I/O接口的数据)。为此,I2~IO应为111,是D、O组合,I5~I3应为000,ALU执行加运算,I8~I6应为011,B口指定的寄存器(为RO)接收运算结果。并且SCi为OO,SSH为00,SST为000(状态位保持不变)。

  这里唯一尚需解决的问题,是B口地址为0000(选R0),应由谁来指定呢?指令寄存器中肯定未能提供这一信息。此时,唯一能提供这一信息的只有时序控制信号形成部件本身,这就是为什么在全部时序控制信号中包括有A口、B口这两组控制信号的原因之一。此时,不用A口,故可以用0000(或其它值,但习惯上为那些不被使用的控制信号赋O值)。B口也为0000值,用于指定接收ALU运算结果(即从串行口读来的数据)的寄存器为RO。由此又引出来一个新的问题,即运算器的A口和B口的值可以来自指令寄存器的操作数地址字段(如ADD指令,SHR指令),也可能来自时序控制信号形成部件的A口、B口控制信号组,为此就必须有办法指出它到底来自何处,由时序控制信号形成部件通过自己的逻辑功能来解决,详细内容见指令流程表和时序控制信号形成部件的逻辑表达式。

  这一处理关系也体现在修改PC、SP两个寄存器内容的操作中,例如,在读取指令时,要完成ARLR4,CO ,R4R4+1,即把PC的低8位(R4)送地地寄存器的低8位,使PC低8位增量且记忆最高位进位输出到CO中,有关的时序控制信号的内容如下:

A口
B口
I8-I6
I5~I3
I2~I0
SCi
SSH
SST
DC1
DC2
0100
0100
010
000
011
01
00
000
000
010

  SCi为01,实现为ALU最低位送入"1"进位值,
  SST为000使C Z V S各位保持不变。

  要特别注意的是,I8~I6一定选用010码,用于把A口的输出(R4寄存器的加运算之前的值送给ARL,而不能选用011码,它会把R4+1的内容值送给ARL而造成错误。

  DC2为010,是使ARL(地址寄存器的低位)接收输入。

  在完成把PC的高8位送地地寄存器的高8位,并使PC高8位(R5)增量操作时,有关的时序控制信号的内容如下:

A口
B口
I8-I6
I5-I3
I2-I0
SCi
SSH
SST
DC1
DC2
0101
0101
010
000
011
11
00
000
000
011

  与前一个节拍相比,差别是A口、B口从0100变成0101(所用的寄存器由R4变R5),SCi由01变成11(送给ALU最低位的进位输入从1变为CO的输出)。

  DC2由010变成011(由ARL接收输入变成为ARH接收输入)。

  其他控制信号的内容均保持不变。再一次强调,I8~I6只能选010码而不能是011码,使送出R4的内容(经A口)到ARL和通过ALU完成R4R4+1在一步中同时完成,不然的话,必须分成两步执行,即先完成ARLR4,下一步再完成R4R4+1。类似的是在执行ARHR5,RSR5+C0操作功能时也是如此办理。

  用于读取指令的两个节拍(节拍状态为0000和0010)中用到的方法同样被用在相对转移的5条机器指令的两个节拍中(节拍状态为0111和0011)。

  类似的处理办法同样用于送出AR SP和修改SP内容的操作功能。16位的堆指针SP由运算器内的R7和R6组成。对入栈指令,要先修改堆栈指针并送到地址寄器,故第一步是ARL,R6 R6-1,完成修改SP的低8位并把修改后的值送ARL;第二步应是ARH,R7R7-C0,完成修改SP的高8位并把修改后的值送ARH。这两步操作,对其他运算器部件或Am2901器件,都可以分别用一步完成,不存在任何矛盾。

  对出栈指令则不然,修改堆栈指针与送地址寄存器的要求是ARLR6,R6R6+1(处理与传送SP的低8位)和ARHR7,R7R7+C0,(处理与传送SP的高8位)。此时,送出的R6(或R7)是加运算之前的内容,与增量R6(或R7)是同时完成的,只有Am2901器件通过提供送出A口内容的功能来支持这一操作过程,其他运算器通常要分成两步才能实现。 对于读写内存的指令(LOD,STO)和出栈、入栈操作的指令(POP,PUSH),送完内存地址之后,接下来的就是向内存发读写命令(/MIO REQ 和/WE为001是读内存,为000是写内存)。为读内存操作时,读出的数据通过外部总线、双向三态门电路74LS245、内部总线送到ALU的外部数据D输入端,通过"B口寄存器D+O"的控制功能送到DR寄存器中,见指令执行流程表;为写操作时,向内存发出写命令(要拖后一段时间,即用主振脉冲的后半段时间发写命令),并通过"IB SR+O"的控制功能,把要写入内存的数据经IB、双向三态门电路74LS245、外部数据总线DB送到内存芯片的数据引脚。

  按照上述思路,可以写出每一条指令的每一个节拍中的时序控制信号状态,这就是指令执行流程表中的全部内容。