?? branch.inc
字號:
;*************************************************************************
;實用的8051單片機分支判斷程序
;直接對應于C語言中的條件判斷語句(相反條件)
;適用于Keil C51編譯器
;*************************************************************************
;*************************************************************************
;宏定義:BEQ_B(Branch if Equal)
;功能:兩個位變量比較,如果相等則跳轉
;參數:
; b1,b2:要比較的兩個位變量(或者位變量與位常量比較)
; Label:跳轉目標
;*************************************************************************
BEQ_B MACRO b1, b2, Label
LOCAL next
MOV C, b2
JNB b1, next
CPL C
next:
JNC Label
ENDM
;*************************************************************************
;宏定義:BNE_B(Branch if Not Equal)
;功能:兩個位變量比較,如果不相等則跳轉
;參數:
; b1,b2:要比較的兩個位變量(或者位變量與位常量比較)
; Label:跳轉目標
;*************************************************************************
BNE_B MACRO b1, b2, Label
LOCAL next
MOV C, b2
JNB b1, next
CPL C
next:
JC Label
ENDM
;*************************************************************************
;宏定義:BEQ(Branch if Equal)
;功能:單字節數比較,如果相等則跳轉
;參數:
; x,y:要比較的兩個數
; Label:跳轉目標
;*************************************************************************
BEQ MACRO x, y, Label
MOV A, x
XRL A, y
JZ Label
ENDM
;*************************************************************************
;宏定義:BNE(Branch if Not Equal)
;功能:單字節數比較,如果不相等則跳轉
;參數:
; x,y:要比較的兩個數
; Label:跳轉目標
;*************************************************************************
BNE MACRO x, y, Label
MOV A, x
CJNE A, y, Label
ENDM
;*************************************************************************
;宏定義:BHS(Branch if High or Same)
;功能:單字節無符號數比較,如果大于或等于則跳轉
;參數:
; x,y:要比較的兩個數
; Label:跳轉目標
;*************************************************************************
BHS MACRO x, y, Label
MOV A, x
CLR C
SUBB A, y
JNC Label
ENDM
;*************************************************************************
;宏定義:BHI(Branch if High)
;功能:單字節無符號數比較,如果大于則跳轉
;參數:
; x,y:要比較的兩個數
; Label:跳轉目標
;*************************************************************************
BHI MACRO x, y, Label
MOV A, x
SETB C
SUBB A, y
JNC Label
ENDM
;*************************************************************************
;宏定義:BLS(Branch if Low or Same)
;功能:單字節無符號數比較,如果小于或等于則跳轉
;參數:
; x,y:要比較的兩個數
; Label:跳轉目標
;*************************************************************************
BLS MACRO x, y, Label
MOV A, x
SETB C
SUBB A, y
JC Label
ENDM
;*************************************************************************
;宏定義:BLO(Branch if Low)
;功能:單字節無符號數比較,如果小于則跳轉
;參數:
; x,y:要比較的兩個數
; Label:跳轉目標
;*************************************************************************
BLO MACRO x, y, Label
MOV A, x
CLR C
SUBB A, y
JC Label
ENDM
;*************************************************************************
;宏定義:JZ_W
;功能:雙字節數為0跳轉
;參數:
; (xh,xl):要判斷的數
; Label:跳轉目標
;*************************************************************************
JZ_W MACRO xh,xl, Label
MOV A, xh
ORL A, xl
JZ Label
ENDM
;*************************************************************************
;宏定義:JNZ_W
;功能:雙字節數不為0跳轉
;參數:
; (xh,xl):要判斷的數
; Label:跳轉目標
;*************************************************************************
JNZ_W MACRO xh,xl, Label
MOV A, xh
ORL A, xl
JNZ Label
ENDM
;*************************************************************************
;宏定義:DJNZ_W
;功能:雙字節數自減1,結果不為0跳轉
;參數:
; (xh,xl):要操作的數
; Label:跳轉目標
;*************************************************************************
DJNZ_W MACRO xh,xl, Label
LOCAL next
MOV A, xl
JNZ next
DEC xh
next:
DEC xl
MOV A, xh
ORL A, xl
JNZ Label
ENDM
;*************************************************************************
;宏定義:BEQ_W(Branch if Equal)
;功能:雙字節數比較,如果相等則跳轉
;參數:
; (xh,xl),(yh,yl):要比較的兩個數
; Label:跳轉目標
;*************************************************************************
BEQ_W MACRO xh,xl, yh,yl, Label
LOCAL next
MOV A, xl
XRL A, yl
JNZ next
MOV A, xh
XRL A, yh
JZ Label
next:
ENDM
;*************************************************************************
;宏定義:BNE_W(Branch if Not Equal)
;功能:雙字節數比較,如果不相等則跳轉
;參數:
; (xh,xl),(yh,yl):要比較的兩個數
; Label:跳轉目標
;*************************************************************************
BNE_W MACRO xh,xl, yh,yl, Label
MOV A, xl
CJNE A, yl, Label
MOV A, xh
CJNE A, yh, Label
ENDM
;*************************************************************************
;宏定義:BHS_W(Branch if High or Same)
;功能:雙字節無符號數比較,如果大于或等于則跳轉
;參數:
; (xh,xl),(yh,yl):要比較的兩個數
; Label:跳轉目標
;*************************************************************************
BHS_W MACRO xh,xl, yh,yl, Label
CLR C
MOV A, xl
SUBB A, yl
MOV A, xh
SUBB A, yh
JNC Label
ENDM
;*************************************************************************
;宏定義:BHI_W(Branch if High)
;功能:雙字節無符號數比較,如果大于則跳轉
;參數:
; (xh,xl),(yh,yl):要比較的兩個數
; Label:跳轉目標
;*************************************************************************
BHI_W MACRO xh,xl, yh,yl, Label
SETB C
MOV A, xl
SUBB A, yl
MOV A, xh
SUBB A, yh
JNC Label
ENDM
;*************************************************************************
;宏定義:BLS_W(Branch if Low or Same)
;功能:雙字節無符號數比較,如果小于或等于則跳轉
;參數:
; (xh,xl),(yh,yl):要比較的兩個數
; Label:跳轉目標
;*************************************************************************
BLS_W MACRO xh,xl, yh,yl, Label
SETB C
MOV A, xl
SUBB A, yl
MOV A, xh
SUBB A, yh
JC Label
ENDM
;*************************************************************************
;宏定義:BLO_W(Branch if Low)
;功能:雙字節無符號數比較,如果小于則跳轉
;參數:
; (xh,xl),(yh,yl):要比較的兩個數
; Label:跳轉目標
;*************************************************************************
BLO_W MACRO xh,xl, yh,yl, Label
CLR C
MOV A, xl
SUBB A, yl
MOV A, xh
SUBB A, yh
JC Label
ENDM
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -