计算机组成原理 关于CPU中的LDAC和STAC指令


很多人不理解stac指令和ldac指令的执行过程 梳理一下
LDAC指令的作用是:AC<—M[T] 即把rom中的内容送AC
STAC指令 同理 M[T]<—AC 把AC中的内容送T
首先需要明确的是各寄存器的功能 为了方便码字 CPU的图在最下

AR 地址寄存器 输出要执行的下一指令地址
TR 数据暂存器 处理双字节指令时使用 用来存储低八位的地址或数值
IR  指令寄存器 存储要执行的指令
AC 通用寄存器 存储第一个操作数
R   通用寄存器 用来存放第二个操作数
PC 程序计数器 输出当前执行的指令地址
DR 数据寄存器 存放双指令中低8位指向地址的存放值


其中LDAC指令包括三个部分 操作码 低位地址 高位地址
执行时必须从主存中取出地址然后再从相应的地址取数据到AC中
即1.取地址 2.根据相应地址取数据

其中取指令的周期即Fetch1 Fetch2 Fetch3:
Fetch 1.PC里存的地址送AR
Fetch2 ROM里的要执行指令的低八位送DR  PC自动加一
Fetch3 DR里的指令送IR PC里指令的装载到AR

Fetch1

AR<—PC

Fetch2

DR<—M,PC<—PC+1

Fetch3

IR<—DR,AR<—PC



在取指周期的Fetch2中  存储地址 T 的低 8 位已经放入 PC 中  并在 Fetch3 的时候 load AR
所以此时CPU要做的事情是:
  1. PC+1 以便取下一条指令(在这里 是T的高8位地址)
  2. AR+1 取T的高8位地址 T   //暂存器

即LDAC1 DR<—M PC<—PC+1 AR<—AR+1
接下来CPU可以取T的高8位地址了 同时它必须用数据暂存器TR暂存低8位地址 并且PC+1
即LDAC2 TR<—DR DR<—M PC<—PC+1
这时CPU得到了T的地址 可以进行从存储器读取数据的操作了 首先把地址复制到AR,然后把要去的数载入到DR 最后复制数据到AC中

LDAC3:AR<—DR,TR
LDAC4:DR<—M
LDAC5:AC<—DR


总的来说可以这么理解
Fetch2:T的低八位已经在PC
Fetch3:T的低八位load到AR中
LDAC1:DR<-M //取高八位 PC = PC+1 取下一条指令  AR = AR+1 取高八位地址
LDAC2: TR<-DR;  //T的高八位地址得到 DR<-M  PC<-PC+1  //取下一条指令
LDAC3:  AR<—DR,TR //dr和tr把指令送ar ar得到十六位地址
LDAC4:DR<-M,DR<-AC

 

  LDAC指令执行周期的数据流和控制流

节拍

状态

微操作序列(数据流)

控制信号(控制流)

T3

LDAC1

DR<—M,PC<—PC+1,

AR<—AR+1

read、membus、drload、pcinc、arinc

T4

LDAC2

TR<—DR,DR<—M,

PC<—PC+1

trload、read、membus、drload、pcinc

T5

LDAC3

AR<—DR,TR

drhbus、trbus、arload

T6

LDAC4

DR<—M

read、membus、drload

T7

LDAC5

AC<—DR

drlbus、acload、alus

                                                  

                                        STAC指令执行周期的数据流和控制流

节拍

状态

微操作序列(数据流)

控制信号(控制流)

T3

STAC1

DR<—AC,AR<—AR+1, PC<—PC+1

drload、read、membus、arinc、pcinc

T4

STAC2

TR<—DR,DR<—M,

PC<—PC+1

read、membus、drload、trload、pcinc

T5

STAC3

AR<—DR,TR

drhbus、trbus、arload

T6

STAC4

DR<—AC

acbus、drload

T7

STAC5

M<—DR

drlbus、busmem、clr、wirte

  • 0
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Yvonnae

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值