高级语言
我们随便写一个高级语言
int a=2,b=3,c=1,y=0; void main(){ y=a*b+c; }
将它编译装入主存 机器语言表示就是这样子的形式:
机器语言
下图的存储字长=16bit
解析步骤
上一条指令取指后PC自动+1,(PC)=1;执行后,(ACC)=2(a=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)=0000000000000011=3
#9:(MDR) → MQ,导致(MQ)=0000000000000011=3
#10:(ACC) → X,导致(X)=2
#11:(MQ)*(X) → ACC,由ALU实现乘法运算,导致(ACC)=6,如果乘积太大,则需要MQ辅助存储
注意:如果不知道上面缩写代表是什么的可以参考我整理的另一篇文章:计算机组成原理各个缩写含义
我们给上面各个步骤分分类,可以得出:
- 取指令是(#1~#4)
- 分析指令是(#5)
- 执行乘法指令是(#6 ~ #11)