8085微處理器指令集分類
INTEL 8085擁有非常豐富的指令集,可以執行各種指令。所有這些指令可以大致分為以下幾類:
描述 | 操作碼數量 | 指令型別數量 | 示例 |
---|---|---|---|
資料傳送指令 | 83 | 13 | MOV,MVI等 |
算術指令 | 62 | 14 | ADD,SUB等 |
邏輯指令 | 43 | 15 | AND,XOR等 |
堆疊指令 | 15 | 9 | PUSH,POP等 |
分支指令 | 36 | 8 | JMP,JZ等 |
I/O指令 | 2 | 2 | IN,OUT等 |
中斷指令 | 5 | 5 | RST 0,RST 1等 |
總計 | 246 | 66 |
下表顯示了控制指令及其含義的列表。
操作碼 | 運算元 | 含義 | 解釋 |
---|---|---|---|
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位地址 | 無條件跳轉 | 程式順序轉移到運算元中給出的記憶體地址。 | ||||||||||||||||||||||||||||
| 16位地址 | 條件跳轉 | 根據PSW的指定標誌位,程式順序轉移到運算元中給出的記憶體地址。 | ||||||||||||||||||||||||||||
| 16位地址 | 無條件子程式呼叫 | 程式順序轉移到運算元中給出的記憶體地址。轉移之前,CALL指令之後下一條指令的地址被壓入堆疊。 | ||||||||||||||||||||||||||||
RET | 無 | 無條件子程式返回 | 程式順序從子程式轉移到呼叫程式。 | ||||||||||||||||||||||||||||
| 無 | 條件子程式返回 | 根據PSW的指定標誌位,程式順序從子程式轉移到呼叫程式,程式執行從新地址開始。 | ||||||||||||||||||||||||||||
PCHL | 無 | 將程式計數器載入為HL暫存器的內容 | H和L暫存器的內容被複制到程式計數器中。H的內容作為高位位元組,L的內容作為低位位元組。 | ||||||||||||||||||||||||||||
RST | 0-7 | 重啟 | RST指令在程式中用作軟體指令,用於將程式執行轉移到以下八個位置之一。
|
下表顯示了算術指令及其含義的列表。
操作碼 | 運算元 | 含義 | 解釋 |
---|---|---|---|
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 |
廣告