A组指令将进入标记为0100状态的节拍,用1步完成寄存器之间的数据运算或传送;
D组指令将进入标记为0101状态的节拍,再经过标记为0100的节拍,用2步完成在2对寄存器之间的数据(实际是各为8位的地址)传送;
B组指令将进入标记为0111状态的节拍,再经过标记为0011的节拍、0001的节拍,用3步完成一次内存储器的读写操作,前2个节拍完成向地址寄存器传送地址,第3个节拍完成数据读写;
C组指令最为复杂,又可以细区分为3种情况:
5条相对转移指令,将进入标记为0111状态的节拍,再经过标记为0011的节拍、0001的节拍、0100的节拍,用4步完成把计算转移地址并送到PC中,前3步完成一次读内存储器以得到相对转移的偏移量OFFSET的值(补码形式)并且计算低位地址,第四步执行高位地址计算。
子程序返回RET指令,将进入标记为0111状态的节拍,再经过0011的节拍、0001的节拍、1111的节拍、1011的节拍、1001的节拍,用6步完成把调用子程序产生的程序断点恢复到PC中,是通过2次读内存储器操作完成的。前3步完成恢复断点低8位,后3步完成恢复断点高8位。毫无疑问,每一次读内存储器都要用3步完成。
子程序调用CALL指令,将进入标记为0111状态的节拍,再经过0011的节拍、0001的节拍、1111的节拍、1011的节拍、1001的节拍、0101的节拍、0100的节拍,用8步完成保存调用子程序产生的程序断点(16位的PC中内容)和传送子程序入口地址到PC中。保存断点是通过2次写内存储器操作完成的。前3步完成保存断点高8位,后3步完成保存断点低8位。毫无疑问,每一次写内存储器都要用3步完成。最后的2步用于把先前保存在R10(低位)和R11(高位)中的子程序入口地址传到16位的PC的低、高位字节中。
有了上述说明之后,回过头来再次概括性地检查一下各个节拍完成的基本操作功能,可以清楚地看到:
标记为0100的节拍、0101的节拍主要完成在寄存器之间的数据(地址)运算或传送;
标记为0111的节拍、0011的节拍、1111的节拍、1011的节拍主要完成运算和传送内存储器的地址到地址寄存器中;
标记为0001的节拍、1001的节拍主要完成读写内存储器的功能。
这种处理办法可以把全部指令的执行流程的逻辑关系表现得更清晰通畅,更容易学习与理解,也为简化所用逻辑线路的设计提供了十分有利的条件。仔细认真地、比较透彻地学好这一指令执行流程设计,是学懂控制器设计的最重要的一件事情。这一设计的简单、完整、清晰、典型、易学的特点表现得很突出。
写出时序信号的逻辑表达式,主要包括写出节拍发生器的逻辑表达式和用于控制其他功能部件的时序信号的逻辑表达式,下面分别简单说明。
|
|