目录
编辑程序指令执行流程
程序执行指令前
执行各指令的顺序
程序(每一条)指令执行具体步骤
以第一步为例:
取指令(#1~#4)
初:(PC)=0,指向第一条指令的存储地址
#1:(PC)→MAR,导致(MAR)=0
#3:M(MAR)→MDR,导致(MDR)=0000010000000101
#4:(MDR)→IR,导致(IR)=000001 0000000101
分析指令(#5)
#5:OP(IR)→CU,指令的操作码送到CU,CU分析后得知,这是“取数”指令
执行取数指令(#6~#9)
#6:Ad(IR)→MAR,指令的地址码送到MAR,导致(MAR)=5
#8:M(MAR)→MDR,导致(MDR)=0000000000000010=2
#9:(MDR)→ACC
程序指令执行流程
程序执行指令前
首先,最开始(程序还没有执行,我们什么都还没有做)的时候:
指令和变量数据都存放在存储器当中
执行各指令的顺序
然后,根据(按照):
各个程序指令:在主存地址当中【从小到大的】存储的顺序
逐个向下地:遍历、执行各个指令
程序(每一条)指令执行具体步骤
程序执行一条指令总的来说分为三大部分:
- 取指令(#1~#4)
- 分析指令(#5)
- 执行取数指令(#6~#9)
下面我们来开始逐个进行讲解:
以第一步为例:
首先(第一轮、第一步操作),程序执行(主存地址为0的)第一条指令:
取指令(#1~#4)
初:(PC)=0,指向第一条指令的存储地址
(CPU当中暂时存储地址的)PC指向我们操作的指令地址
这里,我们执行的就是:主存地址为0的这一(第一)条指令
另外,括号表示:
传输/传递/赋值寄存器里面的内容
#1:(PC)→MAR,导致(MAR)=0
通过地址总线,把
(CPU当中暂时存储地址的)PC中存储的
“指令的地址”信息
传输到
主存储器的地址存储器MAR中
即:
控制器向存储器表明:
我接下来要访问的是0号地址所对应的数据
并且(另外)与此同时:
控制器通过控制总线告诉存储器:本次进行的是读取操作
#3:M(MAR)→MDR,导致(MDR)=0000010000000101
把
(主存储器的地址存储器MAR指向(寄存)的地址)
所指向的(存储单元里面的)存储数据(信息)
传输到MDR
M(memory):记录的值
#4:(MDR)→IR,导致(IR)=000001 0000000101
通过数据总线,把数据信息传输到CPU当中的IR
分析指令(#5)
#5:OP(IR)→CU,指令的操作码送到CU,CU分析后得知,这是“取数”指令
执行取数指令(#6~#9)
#6:Ad(IR)→MAR,指令的地址码送到MAR,导致(MAR)=5
#8:M(MAR)→MDR,导致(MDR)=0000000000000010=2
#9:(MDR)→ACC