从汇编语言角度理解 指令的取(fetch),解码(decode),执行(execute)周期

本文仅是我复习时,根据YouTube讲解视频整理出的内容,如有不足请指出


实现的内容

高级语言 Z = X + Y
X = 2, Y = 3
假设使用的机器有16位,6位用于表示操作(LOAD, ADD, STORE),10位用于表示操作数在主存中的地址
请添加图片描述

1.1 Fetch firsrt instruction 取第一个指令(LOAD)

  • PC(Program Counter)中记录下一个要执行的指令的地址,此时是100
  • PC中的地址传送到MAR(Memory Address Register)
    请添加图片描述
  • MAR通过地址总线(Address Bus)将指令地址发送到主存(Main Memory)中
  • 主存通过数据总线(Data Bus),将主存(地址100)的内容传送到MDR(Memory Data Register)
  • MDR再将其中的内容传送到 CIR(Current Instruction Register)
  • 取指令结束后PC+1,PC存储下一个执行指令的地址
    请添加图片描述

1.2 Decode fisrt instruction 解码第一个指令

  • CU(Control Unit) open various pathways
    请添加图片描述

1.3 Execute first instruction 执行第一个指令

  • 根据指令后10位可只操作数在主存存中的地址是10
  • 将主存地址10中的data传送到MDR
  • MDR将data传送到累加器(Accumulator)
    请添加图片描述

2.1 Fetch second instruction(ADD)

同第一个指令的fetch和decode过程,execute稍有不同
请添加图片描述

2.2 Decode second instruction

同第一个指令
请添加图片描述

2.3 Execute second instruction

  • CU执行Add,将累加器中的data(X=2)传送到ALU(Arithmetic Logic Unit) 请添加图片描述
    操作同取第一个操作数
    此时累加器中即是第二个操作数(Y=2)
    请添加图片描述
  • ALU计算X和Y相加的结果Z并传送到累加器
    请添加图片描述

3.1 Fetch third instruction(STORE)

请添加图片描述

3.2 Decode third instruction

3.3 Execute third instruction

  • 将累加器中的data(Z=5)通过MDR储存到主存地址12
    请添加图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值