C51單片機(jī)的壓縮BCD碼相加程序
設(shè)被加數(shù) NA 及加數(shù) NB 均為三字節(jié)壓縮BCD碼,分別存放于內(nèi)部 RAM 的 20H~22H 及 30H~32H 單元中,低位在前,高位在后。
要求計(jì)算兩數(shù)之和,并將和存放到內(nèi)部 RAM 中 3FH~42H 單元,仍然是低位在前,高位在后。
編寫(xiě)完整的匯編語(yǔ)言源程序。
;----------------------------------------------------------------------
最佳答案:
;這個(gè)程序當(dāng)然是樓主要求的C51單片機(jī)程序。
;下面增加一些調(diào)試時(shí)使用的數(shù)據(jù)。
ORG 0000H
MOV 20H, #12H ;假設(shè)被加數(shù)NA是563412
MOV 21H, #34H
MOV 22H, #56H
MOV 30H, #77H ;假設(shè)加數(shù)NB是998877
MOV 31H, #88H
MOV 32H, #99H
LCALL ADD3B ;調(diào)用3字節(jié)加法子程序
SJMP $ ;相加結(jié)束,暫停,此時(shí)可以觀察到和的數(shù)值:1562289
;-----------------------------------------------
; 3字節(jié)加法子程序如下:
;相加數(shù)字的字節(jié)數(shù)不多,地址且有三個(gè),故不用循環(huán)結(jié)構(gòu)
ADD3B:
MOV A, 20H
ADD A, 30H
DA A
MOV 3FH, A
MOV A, 21H
ADDC A, 31H
DA A
MOV 40H, A
MOV A, 22H
ADDC A, 32H
DA A
MOV 41H, A
MOV A, #0
ADDC A, #0
MOV 42H, A
RET