8085微處理器指令集分類


INTEL 8085擁有非常豐富的指令集,可以執行各種指令。所有這些指令可以大致分為以下幾類:

描述操作碼數量指令型別數量示例
資料傳送指令8313MOV,MVI等
算術指令6214ADD,SUB等
邏輯指令4315AND,XOR等
堆疊指令159PUSH,POP等
分支指令368JMP,JZ等
I/O指令22IN,OUT等
中斷指令55RST 0,RST 1等
總計24666

下表顯示了控制指令及其含義的列表。

操作碼運算元含義解釋
NOP

無操作
不執行任何操作,即只提取和解碼指令。
HLT

暫停並進入等待狀態
CPU完成當前指令的執行並停止進一步執行。需要中斷或復位才能退出暫停狀態。
DI

停用中斷
中斷允許觸發器被複位,所有中斷都被停用,除了TRAP中斷。
EI

啟用中斷
中斷允許觸發器被設定,所有中斷都被啟用。
RIM

讀取中斷遮蔽
此指令用於讀取中斷7.5、6.5、5.5的狀態以及讀取序列資料輸入位。
SIM

設定中斷遮蔽
此指令用於實現中斷7.5、6.5、5.5和序列資料輸出。

下表顯示了邏輯指令及其含義的列表。

操作碼運算元含義解釋
CMP
R
M
比較暫存器或記憶體與累加器
運算元(暫存器或記憶體)的內容與累加器的內容進行比較。
CPI
8位資料
比較立即數與累加器
第二個位元組資料與累加器的內容進行比較。
ANA
R
M
累加器與暫存器或記憶體進行邏輯與運算
累加器的內容與暫存器或記憶體的內容進行邏輯與運算,結果儲存在累加器中。
ANI
8位資料
累加器與立即數進行邏輯與運算
累加器的內容與8位資料進行邏輯與運算,結果儲存在累加器中。
XRA
R
M
累加器與暫存器或記憶體進行異或運算
累加器的內容與暫存器或記憶體的內容進行異或運算,結果儲存在累加器中。
XRI
8位資料
累加器與立即數進行異或運算
累加器的內容與8位資料進行異或運算,結果儲存在累加器中。
ORA
R
M
累加器與暫存器或記憶體進行邏輯或運算
累加器的內容與暫存器或記憶體的內容進行邏輯或運算,結果儲存在累加器中。
ORI
8位資料
累加器與立即數進行邏輯或運算
累加器的內容與8位資料進行邏輯或運算,結果儲存在累加器中。
RLC

累加器左移
累加器的每個二進位制位左移一位。D7位放入D0位以及進位標誌中。CY根據D7位修改。
RRC

累加器右移
累加器的每個二進位制位右移一位。D0位放入D7位以及進位標誌中。CY根據D0位修改。
RAL

累加器透過進位左移
累加器的每個二進位制位透過進位標誌左移一位。D7位放入進位標誌中,進位標誌放入最低有效位D0中。CY根據D7位修改。
RAR

累加器透過進位右移
累加器的每個二進位制位透過進位標誌右移一位。D0位放入進位標誌中,進位標誌放入最高有效位D7中。CY根據D0位修改。
CMA

累加器取反
累加器的內容取反。無標誌位受影響。
CMC

進位取反
進位標誌取反。其他標誌位不受影響。
STC

設定進位
設定進位

下表顯示了分支指令及其含義的列表。

操作碼運算元含義解釋
JMP
16位地址
無條件跳轉
程式順序轉移到運算元中給出的記憶體地址。
操作碼描述標誌狀態
JC進位跳轉CY=1
JNC無進位跳轉CY=0
JP正數跳轉S=0
JM負數跳轉S=1
JZ零跳轉Z=1
JNZ非零跳轉Z=0
JPE偶校驗跳轉P=1
JPO奇校驗跳轉P=0
16位地址
條件跳轉
根據PSW的指定標誌位,程式順序轉移到運算元中給出的記憶體地址。
操作碼描述標誌狀態
CC進位呼叫CY=1
CNC無進位呼叫CY=0
CP正數呼叫S=0
CM負數呼叫S=1
CZ零呼叫Z=1
CNZ非零呼叫Z=0
CPE偶校驗呼叫P=1
CPO奇校驗呼叫P=0
16位地址
無條件子程式呼叫
程式順序轉移到運算元中給出的記憶體地址。轉移之前,CALL指令之後下一條指令的地址被壓入堆疊。
RET

無條件子程式返回
程式順序從子程式轉移到呼叫程式。
操作碼描述標誌狀態
RC進位返回CY=1
RNC無進位返回CY=0
RP正數返回S=0
RM負數返回S=1
RZ零返回Z=1
RNZ非零返回Z=0
RPE偶校驗返回P=1
RPO奇校驗返回P=0

條件子程式返回
根據PSW的指定標誌位,程式順序從子程式轉移到呼叫程式,程式執行從新地址開始。
PCHL

將程式計數器載入為HL暫存器的內容
H和L暫存器的內容被複制到程式計數器中。H的內容作為高位位元組,L的內容作為低位位元組。
RST
0-7重啟RST指令在程式中用作軟體指令,用於將程式執行轉移到以下八個位置之一。
指令重啟地址
RST 00000H
RST 10008H
RST 20010H
RST 30018H
RST 40020H
RST 50028H
RST 60030H
RST 70038H
8085另外還有4箇中斷,可以在內部生成RST指令,不需要任何外部硬體。以下是這些指令及其重啟地址

中斷重啟地址
TRAP0024H
RST 5.5002CH
RST 6.50034H
RST 7.5003CH

下表顯示了算術指令及其含義的列表。

操作碼運算元含義解釋
ADD
R
M
將暫存器或記憶體加到累加器
暫存器或記憶體的內容加到累加器的內容中,結果儲存在累加器中。
示例 - ADD B。
ADC
R
M
將暫存器和進位加到累加器
暫存器或記憶體的內容和進位標誌加到累加器的內容中,結果儲存在累加器中。
示例 - ADC B
ADI
8位資料
將立即數加到累加器
8位資料加到累加器的內容中,結果儲存在累加器中。
示例 - ADI 55H
ACI
8位資料
將立即數和進位加到累加器
8位資料和進位標誌加到累加器的內容中,結果儲存在累加器中。
示例 - ACI 55H
LXI
暫存器對,16位資料
載入暫存器對立即數
該指令將16位資料儲存到運算元中指定的暫存器對中。
示例 - LXI H, ABCDH
DAD
暫存器對
將暫存器對加到H和L暫存器
指定暫存器對的16位資料加到HL暫存器的內容中。
示例 - DAD B
SUB
R
M
從累加器減去暫存器或記憶體
暫存器或記憶體的內容從累加器的內容中減去,結果儲存在累加器中。
示例 - SUB B
SBB
R
M
從累加器減去源和借位
將暫存器或記憶體 & M 的內容以及借位標誌從累加器的內容中減去,結果儲存到累加器中。
示例 − SBB B
SUI
8位資料
從累加器中減去立即數
將 8 位資料從累加器的內容中減去,結果儲存到累加器中。
示例 − SUI 55H
SBI
8位資料
從累加器中減去帶借位的立即數
將 8 位資料從累加器的內容中減去,結果儲存到累加器中。
示例 − SBI 55H
INR
R
M
將暫存器或記憶體加 1
將指定暫存器或記憶體的內容加 1,並將結果儲存在同一位置。
示例 − INR B
INX
R
將暫存器對加 1
將指定暫存器對的內容加 1,並將結果儲存在同一位置。
示例 − INX B
DCR
R
M
將暫存器或記憶體減 1
將指定暫存器或記憶體的內容減 1,並將結果儲存在同一位置。
示例 − DCR B
DCX
R
將暫存器對減 1
將指定暫存器對的內容減 1,並將結果儲存在同一位置。
示例 − DCX B
DAA

十進位制調整累加器
將累加器的內容從二進位制值轉換為兩個 4 位 BCD 數字。
如果累加器低 4 位的值大於 9 或輔助進位標誌 (AC) 被設定,則指令會向低 4 位新增 6。
如果累加器高 4 位的值大於 9 或進位標誌 (CY) 被設定,則指令會向高 4 位新增 6。
示例 − DAA

下表顯示了資料傳輸指令及其含義的列表。

操作碼運算元含義解釋
MOV
Rd, Sc
M, Sc
Dt, M
從源 (Sc) 複製到目標 (Dt)
此指令將源暫存器的內容複製到目標暫存器,無需任何修改。
示例 − MOV H, L
MVI
Rd, data
M, data
移動 8 位立即數
將 8 位資料儲存到目標暫存器或記憶體中。
示例 − MVI B, 55H
LDA
16位地址
載入累加器
將運算元中指定的 16 位地址指向的記憶體位置的內容複製到累加器中。
示例 − LDA 2034H
LDAX
B/D 暫存器對
間接載入累加器
指定暫存器對的內容指向一個記憶體位置。此指令將該記憶體位置的內容複製到累加器中。
示例 − LDAX B
LXI
暫存器對,16 位資料
載入暫存器對立即數
該指令將 16 位資料載入到暫存器或記憶體中指定的暫存器對中。
示例 − LXI B, 3225H
LHLD
16位地址
直接載入 H 和 L 暫存器
該指令將地址指向的記憶體位置的內容複製到 L 暫存器,並將下一個記憶體位置的內容複製到 H 暫存器。
示例 − LHLD 3225H
STA
16位地址
16位地址
將累加器的內容複製到運算元指定的記憶體位置。
這是一個 3 位元組指令,第二個位元組指定低位地址,第三個位元組指定高位地址。
示例 − STA AB00H
STAX
16位地址
間接儲存累加器
將累加器的內容複製到運算元內容指定的記憶體位置。
示例 − STAX 4050H
SHLD
16位地址
直接儲存 H 和 L 暫存器
將 L 暫存器的內容儲存到運算元中指定的 16 位地址的記憶體位置,並將 H 暫存器的內容儲存到透過遞增運算元指向的下一個記憶體位置。
這是一個 3 位元組指令,第二個位元組指定低位地址,第三個位元組指定高位地址。
示例 − SHLD 3225H
XCHG

交換 H 和 L 與 D 和 E
將 H 暫存器的內容與 D 暫存器的內容交換,將 L 暫存器的內容與 E 暫存器的內容交換。
示例 − XCHG
SPHL

將 H 和 L 暫存器複製到堆疊指標
該指令將 H 和 L 暫存器的內容載入到堆疊指標暫存器。
H 暫存器的內容提供高位地址,L 暫存器的內容提供低位地址。
示例 − SPHL
XTHL

交換 H 和 L 與堆疊頂部
將 L 暫存器的內容與堆疊指標暫存器內容指向的堆疊位置交換。
將 H 暫存器的內容與下一個堆疊位置 (SP+1) 交換。
示例 − XTHL
PUSH
暫存器對
將暫存器對壓入堆疊
將運算元中指定的暫存器對的內容按以下順序複製到堆疊中。
堆疊指標暫存器遞減,並將高位暫存器 (B, D, H, A) 的內容複製到該位置。
堆疊指標暫存器再次遞減,並將低位暫存器 (C, E, L, 標誌) 的內容複製到該位置。
示例 − PUSH B
POP
暫存器對
從堆疊彈出到暫存器對
將堆疊指標暫存器指向的記憶體位置的內容複製到運算元的低位暫存器 (C, E, L, 狀態標誌)。
堆疊指標加 1,並將該記憶體位置的內容複製到運算元的高位暫存器 (B, D, H, A)。
堆疊指標暫存器再次加 1。
示例 − POP B
OUT
8 位埠地址
將資料從累加器輸出到具有 8 位地址的埠
將累加器的內容複製到運算元指定的 I/O 埠。
示例 − OUT 01H
IN
8 位埠地址
從具有 8 位地址的埠輸入資料到累加器
讀取運算元中指定的輸入埠的內容並將其載入到累加器中。
示例 − IN 04H

更新於:2019年7月30日

17K+ 次瀏覽

啟動您的職業生涯

完成課程獲得認證

開始學習
廣告