[英]Fetch - execute cycle for LMC instructions
我必須為每個 Little Man Computer 指令(ADD、SUB、BR、BRP 等)定義步驟,並且在分支指令和 COB(或 Halt 指令)方面遇到問題。 我了解每條指令開頭的獲取部分:
個人電腦 -> 三月
MDR -> 紅外線
但我不確定在執行部分添加什么以使指令真正正確。 誰能解釋一下如何為 BR、BRP、BRZ 和 COB 設置獲取執行周期? 任何幫助將不勝感激
首先,LMC是一個虛擬概念。 它有幾種解釋和實現,有時可能是相互矛盾的。 因此,哪個答案是正確的可能取決於您正在使用的課程材料。
為避免混淆,以下是我們可以使用的定義:
fetch-execution 周期的 fetch 部分總是相同的——我更喜歡在相反的方向寫賦值:
我們可以討論最后一步的確切順序。 PC 的更新可以在步驟 2 和 3 之前或同時進行。
獲取執行周期的執行部分取決於 IR 的內容:解釋操作碼(1 位,或 901 或 902 用於IN
/ OUT
)。 例如:
BR
(也稱為BRA
):
PC <= IR(最后 2 位數字)
BRP
:
如果未設置 N:
PC <= IR(最后 2 位數字)
BRZ
:
如果設置了 Z 標志:
PC <= IR(最后 2 位數字)
COB
:
程序執行停止。 在外部用戶觸發運行之前,不會有更多的 fetch-execution 循環。
根據您的課程材料,您可能不會提及 N 或 Z 標志。 在這種情況下,只需分別用“ACC 為負”和“ACC 為零”替換條件。
請注意,我沒有涉及這四個指令的 MAR 或 MDR 寄存器——直接將值從 IR 移動到 PC——因為 MAR 和 MDR 僅用於處理單元和 memory 之間的通信。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.