计算机的工作过程

int a = 2,b = 3,c = 1,y = 0;
void main(){
    y = a * b + c;
}

以该运算为例:

编译装入内存:

内部指令运行:

步骤如下:

初:(PC)=0,指向第一条指令的存储地址

#1:(PC)——》MAR,导致(MAR)= 0

#3:M(MAR)——》MDR,导致(MDR)=000001 0000000101

#4:(MDR)——》IR,导致(IR)= 000001 0000000101

#5:OP(IR)——》CU,指令的操作码送到CU,CU分析后得知,只是“取数”指令

#6:AD(IR)——》MAR,指令的地址码送到MAR,导致(MAR)=5

#8:M(MAR)——》MDR,导致(MDR)=0000000000000010=2

#9:(MDR)——》ACC,导致(ACC)=0000000000000010=2

 取指令(#1~#4) 分析指令(#5) 执行取数指令(#6~#9)

 

上一条指令取指后PC自动加一,(PC)=1;执行后,(ACC)= 2

#1:(PC)——》MAR,导致(MAR)=1

#3: M(MAR)——》MDR,导致(MDR)=000100 0000000110

#4:(MDR)——》IR,导致(IR)=000100 0000000110

#5:OP(IR)——》CU,指令的操作码送到CU,CU分析后得知,这是“乘法”指令

#6:Ad(IR)——》MAR,指令的地址码送到MAR,导致(MAR)=6

#8:M(MAR)——》MDR,导致(MDR)=000100 0000000110=3

#9:(MDR)——》MQ,导致(MQ)=000100 0000000110=3

#10:(ACC)——》X,导致(X)=2

#11:(MQ)*(X)——》ACC,由ALU实现乘法运算,导致(ACC)=6,如果乘积太大,如果乘积太大,则需要MQ辅助存储。

上一条指令取指后PC自动加一,(PC)=2;.........................省略!

总结:

        取指令:PC——》MAR——》M——》MDR——》IR

        分析指令:OP(IR)——》CU

        执行指令:Ad(IR)——》MAR——》M——》MDR——》ACC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值