8031單片機(jī)內(nèi)部RAM存儲(chǔ)的16位無符號(hào)數(shù)控比較兩種編程方法
掃描二維碼
隨時(shí)隨地手機(jī)看文章
設(shè)有兩個(gè)16位無符號(hào)數(shù)NA,NB分別存放在8031單片機(jī)內(nèi)部RAM的40H、41H及50H、51H單元中,當(dāng)NA > NB時(shí),將內(nèi)部RAM的42H單元清0;否則,將該單元置成全1,試編程。
解法I:因?yàn)闊o16位數(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語句,該語句為無條件轉(zhuǎn)移語句。無條件語句應(yīng)盡量少用,這樣可使程序結(jié)構(gòu)緊湊而易讀,易理解。
解法II:先假設(shè)NA > NB,再來判斷是否NA≤NB內(nèi)容來自單片機(jī)之家www.dpj100.com
ORG3000H
CMP2:MOVR0,#00H
MOVA,50H
CJNEA,40H,CMP3
MOVA,51H
CJNEA,41H,CMP3
SJMPNHIGHE
CMP3:JCHIGHE
NHIGHE:MOVR0,#0FFH;不大于標(biāo)志
HIGHE:MOV42H,R0
SJMP$
END