asm51 汇编子程序(有关多字节无符号整数 bcd 码运算部分) ;=============================================== =============================== ;多字节二进制整数转换为十进制整数子程序 NIBTD ; 入口: R0 指向多字节二进制整数高位, R1 指向结果多字节十进制整数高位, R7=n ; 使用 A,B, R0~R7 ,影响 CY ;=============================================== =============================== NIBTD: MOV A,R0 MOV R5,A MOV A,R1 MOV R6,A MOV A,R7 MOV R3,A CLR A NBD0: MOV ***@R1,A INC R1 DJNZ R3,NBD0 MOV A,R7 MOV B,# 8 MUL AB MOV R3,A NBD4: MOV A,R5 ADD A,R7 DEC A MOV R0,A MOV A,R7 MOV R2,A CLR C NBD1: MOV A,***@R0 RLC A MOV ***@R0,A DEC R0 DJNZ R2,NBD1 PUSH PSW MOV A,R6 ADD A,R7 DEC A MOV R1,A POP PSW MOV A,R7 MOV R2,A NBD3: MOV A,***@R1 ADDC A,***@R1 DA A MOV ***@R1,A DEC R1 DJNZ R2,NBD3 DJNZ R3,NBD4 RET ;=============================================== =============================== ;=============================================== =============================== ;多字节十进制整数转换为二进制整数子程序 NIDTB ; 入口: R0 指向多字节十进制整数高位, R1 指向结果多字节二进制整数高位, R7=n ; 使用 A,B, R0~R7 ,影响 CY ;=============================================== =============================== NIDTB: MOV A,R1 MOV R6,A MOV A,R7 MOV R3,A CLR A NDB0: MOV ***@R1,A INC R1 DJNZ R3,NDB0 MOV A,R7 MOV R3,A NDB3: CALL NDB1 MOV A,***@R0 ANL A,#0F0H SWAP A CALL NDB2 CALL NDB1 MOV A,***@R0 ANL A,#0FH CALL NDB2 INC R0 DJNZ R3,NDB3 RET NDB1: MOV A,R7 MOV R4,A MOV A,R6 ADD A,R7 DEC A MOV R1,A CLR C MOV R2,#0 NDB4: MOV A,***@R1 MOV B,#10 PUSH PSW MUL AB POP PSW ADDC A,R2 MOV ***@R1,A M
多字节无符号整数bcd码运算部分(精) 来自淘豆网m.daumloan.com转载请标明出处.