计算机组成原理 关于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要做的事情是:
即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 |
總結
以上是生活随笔為你收集整理的计算机组成原理 关于CPU中的LDAC和STAC指令的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Ubuntu 开机自动运行命令
- 下一篇: JL690X(2)驱动RGB灯带