表3.2 Am2910命令码及其的功能
Am2910提供了16条命令,用来控制Am2910内部的操作和选择下一条将要执行的微指令的地址。其中只用少数命令(如0,2,14号命令)的执行结果仅由命令码本身决定,大部分命令还都要受到测试条件
(/CC和/CCEN) 为真还是为假的控制,有些命令(如 8,9和15号命令)的执行结果,则要受到内部计数器当前值是否为零的控制,其中15号命令同时受到内部计数器的值是否为零和测试条件是否通过的双重控制,以实现三路微程序转移的功能。
现将教学计算机设计中要用到的0,2,3,4,6,8,14,15这8条命令的功能和我们的具体用法说明如下:
0号命令:用于初始化,即无条件清除内部微堆栈,并使Y的输出一定为零,用于系统加电时,
确保此时系统从0号微地址开始执行微程序。
2号命令:用于指令功能分支,即输出信号/MAP为低,使D输入信号从MAP
ROM(微地址映射部件)得到,并将其作为输出微地址Y的值,实现用指令操作码找到对应该指令的微程序段的入口地址,从而开始该条指令的特定的执行过程。
3号指令:用于条件微转移控制,当条件成立,即/CC为低时,用/PL把微指令字中的下地址字段的内容(转移地址)经过D输入并送到Y,实现微程序转移。当/CC为高时,微程序顺序执行,即把已增1后的微指令地址作为下地址。若外部电路确保送入的/CC的状态为低,3号条件微转移命令也可以用于实现无条件的必定微程序转移来使用。
4号命令:进栈并条件装入计数器,把下条微指令的地址压入堆栈中,同时若条件测试通过,则把当前微指令地址字段的内容(通常作为循环次数)装入计数器中,然后顺序执行。该命令通常是为建立微程序循环作准备。
6号命令:条件转至中断向量,用于为外部输入D选择一个新的微地址来源,即输出信号/VECT
为低,原意取某一向量地址,我们用其从教学机主板上的开关取一个手拨的微程序地址。
8号命令:用于微程序循环控制。为了使用这条命令,前面必须用一条命令(通常是4号命令)把循环首地址压入堆栈,把循环次数装入计数器。该命令执行时,先检测计数器的值是否为零,若不为零,则计数器减一,并取微栈顶的内容作为下条微指令的地址(即继续循环),否则,把微堆栈指针减一(即弹出循环地址),顺序执行下一条微指令。
14号命令:顺序执行,即执行紧跟在本条微指令后面的那条微指令。
15号命令:三路转移,与8号命令类似,在该命令执行之前,前面必须有一命令(如4号命令)已把转移地址压入堆栈,把循环计数值装入计数器。该命令要同时受到条件输入和计数器当前值的控制。当计数器不为零时,计数器减一,同时,若条件测试通过,则退栈(即弹出转移地址),并选择增1后的微指令地址作为下条微指令的地址,否则,选择微栈顶的内容作为下条微指令的地址;
当计数器为零时,微堆栈指针减一(即退栈),此时,若条件测试通过,则用增1后的微指令地址为下条微指令的地址,否则,下地址来自当前微指令的下地址字段。
|
|