《计算机组成原理》课程设计-无符号数阶乘
代码执行流程
(1)每个程序开始的第一条微指令一定是取指令,此微指令的值为CBFFFFH,对应到各个控制位就是EMRD、PCOE、及IREN为低,此三位有效,其它所有位都处于无效状态。在程序第一次运行时或复位后,uPC和PC的值都为0,PCOE有效将PC值送到ABUS,做为程序存储器EM的地址,EMRD信号有效就是从程序存储器EM中读出程序指令,IREN将读出的指令送到IR寄存器和uPC,此微指令的作用就是:从程序存储器EM的0地址读出程序指令机器码7CH,并存入uPC中做为微程序存储器uM的地址,从微程序存储器uM的7CH单元中读出微控制码C7FFF7H,同时PC加1为读下一条指令或数据做准备。
(2) MOV A,#5: 本指令为两个状态周期。在T1状态时,上次读出的指令机器码为7CH,存入uPC中做为微程序存储器uM的地址,读出微指令的值为C7FFF7H,对应到各个控制位就是EMRD、PCOE、EMEN及AEN为低,处于有效状态,其它控制位为无效状态。由于上条微指令(取指操作)已将PC加1,此时PCOE是将加1后的PC输出到ABUS做为程序存储器EM的地址,EMRD就是从程序存储器EM中读出数据,本指令中读出的数据应为12H,EMEN将读出的数据送到DBUS总线上,AEN是将DBUS总线上的值存入累加器A中。同时uPC加1为执行下条微指令做准备,PC加1为读取下一条指令做准备。每条指令的最后一条微指令一定是取指令操作,本指令的T0状态周期即为取指令,执行上一条微指令时uPC已经加1,按照此uPC为地址从微程序存储器uM读出的微指令的值为CBFFFFH,参照第一步的说明,此微指令从程序存储器EM中读取指令。
(3) MOV A,R0: 本指令为两个状态周期。在T1状态时,由上条取指操作取出的指令机器码为70H,存入uPC后做为微程序地址访问微程序存储器uM的70H单元,读出微指令的值为FFF7F7,各控制位的状态为RRD、AEN为低电平为有效状态,RRD有效表示从寄存器组R0-R3中读数送到DBUS上,在上条取指令操作时,IREN将取出的指令机器码70H送入IR寄存器,而IR寄存器的最低两位是用来选择寄存器R?的,此时IR寄存器最低两位为00,被读出的寄存器为R0。AEN有效表示将DBUS的数据写到累加器A中。同时uPC加1,为执行下条微指令做准备。 本指令的T0状态也是取指令,完成的功能是取出下一条要执行的指令机器码,并存入uPC和IR寄存器中。
(4)MOV R, #II: 本指令分为三个状态周期。在T2状态时,将立即数的值存入寄存器W中,存入后读出微指令的值为C7FFEF,对应到各个控制位就是EMRD、PCOE、EMEN及WEN为低,处于有效状态,其它控制位为无效状态。由于上条微指令(取指操作)已将PC加1,此时PCOE是将加1后的PC输出到ABUS做为程序存储器EM的地址,EMRD就是从程序存储器EM中读出数据,本指令中读出的数据应为12H,EMEN将读出的数据送到DBUS总线上,AEN是将DBUS总线上的值存入累加器A中。同时uPC加1为执行下条微指令做准备,PC加1为读取下一条指令做准备。在T1状态时,将A与W进行减运算,并存入寄存器中,存入后读出的微指令值就是FFFB99,在X1, X2, X3中,仅X3有效。在T0状态时,是取指令,完成的功能是取出下一条要执行的指令机器码,并存入uPC和IR寄存器中。
(5) ADD R, A: 本指令分为三个状态周期。在T2状态时,将寄存器中的内容存入寄存器W中,存入后读出微指令的值为FFF7EF,对应到各个控制位就是RRD, WEN为低,处于有效状态,其它控制位为无效状态。在T1状态时,将A与W进行加运算,并存入寄存器中,存入后读出的微指令值就是FFFB98,在X1, X2, X3中,仅X3有效。对于S2,S1,S0而言全都有效,表示加运算。在T0状态时,是取指令,完成的功能是取出下一条要执行的指令机器码,并存入uPC和IR寄存器中。
(6)MOV R, R: 本指令分为三个状态周期。在T2状态时,将寄存器中的内容存入寄存器A中,存入后读出微指令的值为FFF7F7,对应到各个控制位就是RRD, AEN为低,处于有效状态,其它控制位为无效状态。在T1状态时,将A的内容存入寄存器中,存入后读出的微指令值就是FFFB9F,在X1, X2, X3中,仅X3有效。且RWR处于低电平,是有效状态。在T0状态时,是取指令,完成的功能是取出下一条要执行的指令机器码,并存入uPC和IR寄存器中。
微程序流程图
下载地址
暂时无法上传实验报告,要的私聊我,不免费,一瓶饮料的价格。