8085 微處理器中的復位指令 (RSTn)


在 8085 指令集中,RSTn 實際上代表“Restart n”。在這種情況下,n 的值只能從 0 到 7。因此,存在八種可能的 RST 指令,例如 RST 0、RST 1、…、RST 7。它們是 1 位元組的呼叫指令。在功能上,RST n 指令類似於

RST n = CALL n*8

例如,讓我們考慮 RST 4 在功能上等效於 CALL 4*8,即 CALL 32 = CALL 0020H。RST 2 的優點在於它只有 1 位元組長,而 CALL 0010H 則有 3 位元組長。因此,RST 指令對於分支到常用子程式很有用。

助記符,運算元
操作碼(十六進位制)
二進位制
位元組
目標地址 (n*8)
RST 0
C7
1100 0111
1
0000H
RST 1
CF
1100 1111
1
0008H
RST 2
D7
1101 0111
1
0010H
RST 3
DF
1101 1111
1
0018H
RST 4
E7
1110 0111
1
0020H
RST 5
EF
1110 1111
1
0028H
RST 6
F7
1111 0111
1
0030H
RST 7
FF
1111 1111
1
0038H


在上表中,已經表明,如果我們分析 RSTn 的十六進位制程式碼,我們會發現中間的 3 位表示 n 的值(如表中突出顯示的那樣)。位元組中的其他 5 位提供 RST 的程式碼。

讓我們考慮 RST 4 作為此類指令的一個示例。它是一個 1 位元組指令。它在功能上與 CALL 0020H = PUSH PC + JMP 0010H 相同。它導致分支到從記憶體地址 0020H 開始的子程式。類似地,RST 5 導致分支到 5*8 = 0028H 處的子程式。因此,從位置 0020H 開始的子程式不應超過記憶體位置 0027H。因此,最多隻有 8 個位置可用於子程式,這通常太小,無法容納子程式主體。此限制可以透過分支到其他記憶體位置(例如 4050H)處的子程式來克服。這是透過 RST 4 指令和記憶體位置 0020H 處的 JMP 4050H 指令的組合來實現的,如下面的圖所示。

由於執行 RST 4 而導致堆疊內容受到影響的方式如下所示。

由於執行 RST 4 而導致堆疊內容受到影響的方式如下所示。


之前
之後
(PC)
2021H
0020H
(SP)
5000H
4FFEH
(4FFFH)
任何值
20H
(4FFEH)
任何值
21H


在圖中,主程式從地址 2000H 開始,指令 LXI SP, 5000H 用於將 SP 初始化為該記憶體地址。主程式在地址 2050H 處具有終止指令 HLT。在主程式的地址 2020H 處,指令為 RST 4。因此,計算出的目標地址將為 4*8 = 32 = 0020H。因此,返回地址 2021H 將被推送到堆疊頂部。因此,20H 將被推送到堆疊位置 4FFFH,而 21H 將被推送到地址 4FFEH。因此,更新後的 SP 地址將為 4FFEH。並且控制將轉移到地址 0020H。在該地址,我們有指令 JMP 4050H。因此,程式控制將分支到該地址 4050H。此子程式在地址 4080H 處具有最後一個指令,指令為 RET。因此,返回的 2 位元組地址將從堆疊頂部彈出。因此,16 位返回地址將為 2021H,並且 SP 將再次初始化為 5000H。因此,主程式將恢復執行,並在地址 4080H 處使用指令 HLT 正常終止。

針對此指令 **RST 4** 執行的時間圖如下所示:


**總結** - 因此,此指令 **RST 4** 需要 1 位元組、3 個機器週期(操作碼獲取、記憶體寫入、記憶體寫入)和 12 個 T 狀態才能執行,如時間圖所示。

更新於:2020 年 6 月 27 日

10K+ 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告