8031单片机内部RAM存储的16位无符号数控比较两种编程方法
扫描二维码
随时随地手机看文章
设有两个16位无符号数NA,NB分别存放在8031单片机内部RAM的40H、41H及50H、51H单元中,当NA > NB时,将内部RAM的42H单元清0;否则,将该单元置成全1,试编程。
解法I:因为无16位数的比较指令,所以,只能用8位数的比较指令。
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内容来自单片机之家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