;==========压缩BCD码数据,转换为16进制数据子程序======== ;函数名称:BCD2_HEX ;功能: 压缩BCD码数据,转换为16进制数据 ;入口参数:(R0) 压缩BCD码数据(L--H),R7 = 压缩BCD码字节数 ;出口参数:(R1) = 16进制数据(L--H) ;影响资源:C,A,B,R2,R3,R4,R5,R6,R7 ;其他: 压缩BCD码 ;=================================================== BCD_HEX: push PSW push Acc push B mov A,R1 mov R6,A mov A,R7 mov R3,A clr A BCD_HEX0: mov @R1,A inc R1 djnz R3,BCD_HEX0 mov A,R7 mov R3,A ;清零 BCD_HEX1: lcall BCD_HEX2 mov A,@R0 anl A,#0F0H swap A lcall BCD_HEX4 lcall BCD_HEX2 mov A,@R0 anl A,#0FH lcall BCD_HEX4 dec R0 djnz R3,BCD_HEX1 pop B pop Acc pop PSW dec R1 ret
BCD_HEX2: mov A,R7 ;*10 mov R4,A mov A,R6 mov R1,A clr C mov R2,#00H BCD_HEX3: mov A,@R1 mov B,#0AH push PSW mul AB pop PSW addc A,R2 mov @R1,A mov R2,B inc R1 djnz R4,BCD_HEX3 ret ;*C10 End BCD_HEX4: mov R5,A ;+ mov A,R6 mov R1,A mov A,R7 mov R4,A mov A,R5 addc A,@R1 mov @R1,A inc R1 dec R4 mov A,R4 jnz BCD_HEX5 ljmp BCD_HEXEND BCD_HEX5: mov A,@R1 addc A,#00H mov @R1,A inc R1 djnz R4,BCD_HEX5 BCD_HEXEND: ret |