计组(1.2):各硬件工作原理

文章详细阐述了程序执行的流程,从取指令开始,包括PC指针初始为0,将地址传给MAR,读取存储器内容到MDR,再到IR,指令分析和执行,特别是取数指令的步骤,涉及地址计算、数据传输和ACC寄存器的更新。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

​编辑程序指令执行流程

程序执行指令前

执行各指令的顺序

程序(每一条)指令执行具体步骤

以第一步为例:

取指令(#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. 取指令(#1~#4)
  2. 分析指令(#5)
  3. 执行取数指令(#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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值