‘DAD rp’ 指令執行


在 8085 指令集中,對於 16 位加法,有一個可用的指令,即 **DAD rp** 指令。它是一個 1 位元組指令。使用此指令,將 HL 暫存器對的內容與所述暫存器對的內容相加,並將產生的結果儲存在 HL 暫存器對中。

助記符,運算元
操作碼(十六進位制)
位元組數
DAD B
09
1
DAD D
19
1
DAD H
29
1
DAD SP
39
1


例如,讓我們考慮 DADB 指令的執行。假設 HL 暫存器對的初始內容為 5050H,BC 暫存器對的內容為 4050H。因此,如果我們執行指令 DAD B,則將進行以下 16 位加法:


之前
之後
(BC)
4050H
4050H
(HL)
5050H
90A0H
計算步驟
(BC)= 4050H = 0100 0101
(HL)= 5050H = 0101 0101
       -----  ---------
(HL)  90A0H = 1001 1010


在第一個機器週期 M1 中,DAD B 指令的操作碼 09H 從記憶體中取出到 8085 的 IR 暫存器。然後,8085 將解碼此指令,將其解釋為 DAD B 指令的操作碼。此操作碼提取機器週期總共需要 3 + 1 = 4 個時鐘週期。現在是將 HL 和 BC 暫存器對的內容相加並將結果儲存到 HL 暫存器對的時候了。在 8085 中,我們只有一個 8 位 ALU。因此,要執行此 16 位加法,我們使用臨時暫存器來儲存中間結果。

在第二個機器週期 M2 中,將發生以下操作。

  • 累加器臨時儲存在 W 暫存器中;

  • L 暫存器內容移到累加器;

  • C 暫存器內容移到臨時暫存器;

  • 執行加法,並將 ALU 輸出移到 L 暫存器。

此機器週期使用三個時鐘週期。這是一個匯流排空閒 (BI) 機器週期,因為

  • 8085 沒有發出地址;

  • 沒有資料從外部發送或接收;

  • 8085 沒有產生外部控制訊號。

在第三個機器週期 M3 中,將發生以下操作。

  • H 暫存器內容移到累加器;

  • B 暫存器內容移到臨時暫存器;

  • 執行帶進位的加法,並將結果儲存在 H 中;

  • 累加器從 W 暫存器獲取原始值。

此機器週期使用三個時鐘週期。這也是一個匯流排空閒 (BI) 機器週期,因為

  • 8085 沒有發出地址;

  • 沒有資料從外部發送或接收;

  • 8085 沒有產生外部控制訊號。

因此,DAD B 指令需要總共十個時鐘週期。它由操作碼提取機器週期(四個時鐘週期)組成,後面跟著兩個 BI 機器週期(每個三個時鐘週期)。


地址
十六進位制程式碼
助記符
註釋
2000
D3
OUT F0H
累加器內容將被髮送到埠地址 F0H
2001
F0

F0H 作為埠地址


針對此指令 **OUT F0H** 執行的時序圖如下:

**總結** − 因此,此指令 **OUT** 需要 1 個位元組,3 個機器週期(操作碼提取、匯流排空閒週期、匯流排空閒週期)和 10 個 T 狀態才能執行,如時序圖所示。

更新於:2020 年 6 月 27 日

2K+ 次檢視

啟動您的 職業生涯

完成課程獲得認證

開始
廣告