8051程式分支組


在 8051 微控制器中,邏輯組下有 17 條不同的指令。總共有 46 個操作碼。這些指令不影響標誌位,但 CJNE 影響 CY 標誌位。在這些指令中,使用了 11 位地址和 16 位地址。

在下表中,我們將看到助記符、長度、機器週期執行時間、操作碼數量等。

助記符
位元組數
執行時間
操作碼數量
ACALL addr11
2
2
8
LCALL addr16
3
2
1
RET
1
2
1
RETI
1
2
1
AJMP addr11
2
2
8
LJMP addr16
3
2
1
SJMP rel
2
2
1
JMP @A+DPTR
1
2
1
JZ rel
2
2
1
JNZ rel
2
2
1
CJNE A, a8, rel
3
2
1
CJNE A, #d8, rel
3
2
1
CJNE Rn, #d8, rel
3
2
8
CJNE @Ri, #d8, rel
3
2
2
DJNE Rn, rel
2
2
8
DJNZ a8, rel
3
2
1
NOP
1
1
1


示例

序號指令和描述
1LJMP LABEL
這是一個 LJMP addr16 的示例。LJMP 代表長跳轉。它可以跳轉到符號位置標籤。地址由彙編器根據標籤的值生成。使用此指令,我們可以跳轉到程式中的任何位置。
2ACALL SUBR
這是 ACALLa ddr11 型別的指令。ACALL 是絕對呼叫。使用此指令,它從符號位置 SUBR 呼叫子程式。在呼叫之前,它將程式計數器的值儲存在堆疊頂部。
3SJMP LABEL
此指令類似於 SJMP rel。SJMP 表示短跳轉。這裡 LABEL 是由彙編器生成的 8 位地址。使用此指令,我們可以停止 8051 中的程式。
4JZ LABEL
此指令類似於 JZ rel 指令。當 A 暫存器的值為 00h 時,它才會跳轉到 LABEL,否則將被忽略。彙編器從指令生成 8 位有符號位移。
5RET
這是返回指令。當它執行時,程式計數器的下一個地址從堆疊頂部彈出,並且 SP 的值減少 2。
6RETI
這是中斷返回。它也類似於 RET 指令。但它也恢復中斷邏輯。因此,在恢復後,它可以在相同的優先順序級別接受其他中斷。
7DJNZ 80H, LABEL
這類似於 DJNZ a8, rel。它表示遞減並如果非零則跳轉。因此,埠 P0 的內容遞減 1。當遞減後值不為 00H 時,將發生分支指令。這裡 LABEL 是一個 8 位有符號數。
8CJNE R5, #90H, LABEL
這類似於指令 CJNE Rn, #d8, rel。CJNE 代表比較並如果非等則跳轉。因此,它是比較和跳轉的組合指令。這裡 R5 的內容與 90H 進行比較。當值不相同時,它會跳轉到標籤。LABEL 是 8 位有符號數。


在執行 ACALL 或 AJMP 期間,我們可以認為程式記憶體被劃分為 2K 位元組塊。從 16 位地址中,前五位是固定的。此外,可以將 2K 記憶體塊劃分為 256 位元組頁面。因此,我們需要 3 位來選擇頁面。

有三種無條件跳轉:SJMP、LJMP 和 AJMP,但有兩種無條件呼叫指令 ACALL、LCALL。沒有 SCALL。


更新於: 2020 年 6 月 27 日

4K+ 次檢視

開啟您的 職業生涯

透過完成課程獲得認證

立即開始
廣告

© . All rights reserved.