8031單片機內(nèi)部RAM存儲的16位無符號數(shù)控比較兩種編程方法
設有兩個16位無符號數(shù)NA,NB分別存放在8031單片機內(nèi)部RAM的40H、41H及50H、51H單元中,當NA > NB時,將內(nèi)部RAM的42H單元清0;否則,將該單元置成全1,試編程。
解法I:因為無16位數(shù)的比較指令,所以,只能用8位數(shù)的比較指令。
ORG2000H
CMP:MOVA,50H
CJNEA,40H,CMP1
MOVA,51H
CJNEA,41H,CMP1
SJMPNHIGHE
CMP1:JCHIGHE
NHIGHE:MOV42H,#0FFH
SJMPDONE
HIGHE:MOV42H,#00H
DONE:SJMP$
END
上述程序中多次用到SJMP語句,該語句為無條件轉移語句。無條件語句應盡量少用,這樣可使程序結構緊湊而易讀,易理解。
解法II:先假設NA > NB,再來判斷是否NA≤NB內(nèi)容來自單片機之家www.dpj100.com
ORG3000H
CMP2:MOVR0,#00H
MOVA,50H
CJNEA,40H,CMP3
MOVA,51H
CJNEA,41H,CMP3
SJMPNHIGHE
CMP3:JCHIGHE
NHIGHE:MOVR0,#0FFH;不大于標志
HIGHE:MOV42H,R0
SJMP$
END