分析下面的计算机工作流程:
1.取数a至ACC:PC程序寄存器自增1,变成0(可以理解为PC初始从-1开始自增);接着PC把当前指令的地址给到MAR(地址寄存器);MAR拿到当前地址后,就会根据地址去存储体中拿出指令并放到MDR(数据寄存器)中;同时CPU会把这个指令放到IR(指令寄存器)中,让IR暂时储存这个指令;同时IR会将这条暂存的指令分为操作码和地址码两个部分;接着被分出的操作码会给到CU(控制单元),地址码(该指令操作的地址)给到MAR(即主存地址为5的位置);MAR会根据这个地址码将数据(a=2)取出并放到MDR,在CPU的控制下,将数据从MDR中取出放到ACC中。
2.乘b得ab,存在ACC中:PC接着自增1(0-->1),接着PC把当前指令的地址给到MAR,MAR拿到地址后,根据地址去存储体中拿出指令并放到MDR,在CPU控制下,这个指令被放到IR中,IR将这条暂存的指令分为操作码和地址码两个部分;操作码会给到CU(*操作),地址码给到MAR(即主存地址为6的位置);将这条数据(b=3)取出放入到MDR中;接着根当前CU的控制,将取出来的数据放到X(通用寄存器)中执行a*b运算后,将结果存放到ACC中
3.加c得ab+c,存于ACC中:PC接着自增1(1-->2),接着PC把当前指令的地址给到MAR,MAR拿到地址后,根据地址去存储体中拿出指令并放到MDR,在CPU控制下,这个指令被放到IR中,IR将这条暂存的指令分为操作码和地址码两个部分;操作码会给到CU(+操作),地址码给到MAR(即主存地址为7的位置)(同一套操作流程),把这条数据(c=1)放到X中,在CU的控制下,执行+c的操作,并将结果放到ACC中。
4.将a*b+c存于主存单元:PC接着自增1(2-->3),接着PC把当前指令的地址给到MAR,MAR拿到地址后,根据地址去存储体中拿出指令并放到MDR,在CPU控制下,这个指令被放到IR中,IR将这条暂存的指令分为操作码和地址码两个部分;操作码会给到CU(存数据),CU控制IR将地址给到MAR,将ACC中的数据写入到MDR,然后CU发送写入指令,将MDR中的数据放到指定的地址中(在这里表示从7写入到中去)。
5.停机:PC接着自增1(3-->4),接着PC把当前指令的地址给到MAR,MAR拿到地址后,根据地址去存储体中拿出指令并放到MDR,在CPU控制下,这个指令被放到IR中,IR将这条暂存的指令分为操作码和地址码两个部分;操作码会给到CU(停机指令),至此计算机停机。