单片机多字节BCD码减法!10
入口件,字节在条数中~被在减数中~在减数中。 ;R7[R0][R1]
出口信息,差在中~最高位借位在中。 ;[R0]CY
影节源,响、、、;PSWAR2R3
节A-B=A+(B)
;,99-66=33 -----99+100-66=99+34=133
减数十节制取节 BCDB:LCALLNEG1 ;[R1]
按多字节,:,节加法节理 LCALLBCDA ;
将节节加法的节位节志节节成借位节志 CPL C ;
MOVF0,C;
恢节减数的原始节 LCALLNEG1 ;[R1]
恢节借位节志 MOVC,F0 ;
RET
十节制取节子程序入口 NEG1:MOVA,R0 ;[R1]A- R0
交节指节 XCHA,R1 ;A-R1,R1-R0
XCHA,R0 A-R0,R0-R1
通节节节取节 LCALLNEG ;[R0][R1]
MOVA,R0 A-R0
节回指节 XCHA,R1 ;A-R1, R1-R0
XCHA,R0 A-R0, R0-R1
RET
多字节,:,节取节 ;
取;字节一,至数减中 NEG:MOVA,R7 ;R2A-R7
DECA A-(R7-1)
MOVR2,A R2-A
MOVA,R0 A-R0
MOVR3,A R3- R0NEG0:CLRC
MOVA,#99H
按字节十节制取节 SUBBA,@R0 ;
存回中 MOV@R0,A ;[R0]
节整据指节 数INCR0 ;
节理完;,字节 DJNZR2,NEG0 ;R2
最低字节节取节 独MOVA,#9AH ;
SUBBA,@R0
MOV@R0,A
恢节指节 MOVA,R3 ;
MOVR0,A
RET
多字节节加法 ;BCD
取字节至数中 BCDA:MOV A,R7;R2
MOVR2,A
初始化据指节 数ADDA,R0 ;
MOVR0,A
MOVA,R2
ADDA,R1
MOVR1,A
CLRC
节整据指节 数BCD1:DECR0 ;DECR1
MOVA,@R0
按字节相加 ADDCA,@R1 ;
十节制节整 DAA ;
和存回中 MOV@R0,A ;[R0]
节理完所有字节 DJNZR2,BCD1 ;
RET