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口字段,这样就必须有办法指出它到底来自何处,这是通过在微指令字中另外设置两个选择信息SA和SB来解决的,具体规定是:
|
A口的值的来源
|
B口的值的来源
|
| SA=1来自指令寄存器的SR字段 |
SB=1 来自指令寄存器的DR字段 |
| SA=0来自微指令字的 A 口字段 |
SB=0 来自微指令字的 B 口字段 |
|
|