BCDA: MOV A,R7 MOV R2,A ADD A,R0 MOV R0,A MOV A,R2 ADD A,R1 MOV R1,A CLR C BCD1: DEC R0 DEC R1 MOV A,@R0 ADDC A,@R1 DA A MOV @R0,A DJNZ R2,BCD1 RET BCDB: LCALL NEG1 LCALL BCDA CPL C MOV F0,C LCALL NEG1 MOV C,F0 RET NEG1: MOV A,R0 XCH A,R1 XCH A,R0 LCALL NEG MOV A,R0 XCH A,R1 XCH A,R0 RET NEG: MOV A,R7 DEC A MOV R2,A MOV A,R0 MOV R3,A NEG0: CLR C MOV A,#99H SUBB A,@R0 MOV @R0,A INC R0 DJNZ R2,NEG0 MOV A,#9AH SUBB A,@R0 MOV @R0,A MOV A,R3 MOV R0,A RET BRLN: MOV A,R7 MOV R2,A ADD A,R0 MOV R0,A MOV R3,#0 BRL1: DEC R0 MOV A,@R0 SWAP A MOV @R0,A MOV A,R3 XCHD A,@R0 MOV R3,A DJNZ R2,BRL1 RET MULD: MOV A,R3 MOV B,R7 MUL AB MOV R4,B MOV R5,A MOV A,R3 MOV B,R6 MUL AB ADD A,R4 MOV R4,A CLR A ADDC A,B MOV R3,A MOV A,R2 MOV B,R7 MUL AB ADD A,R4 MOV R4,A MOV A,R3 ADDC A,B MOV R3,A CLR A RLC A XCH A,R2 MOV B,R6 MUL AB ADD A,R3 MOV R3,A MOV A,R2 ADDC A,B MOV R2,A RET MUL2: MOV A,R3 MOV B,A MUL AB MOV R4,B MOV R5,A MOV A,R2 MOV B,A MUL AB XCH A,R3 XCH A,B XCH A,R2 MUL AB CLR C RLC A XCH A,B RLC A JNC MU20 INC R2 MU20: XCH A,B ADD A,R4 MOV R4,A MOV A,R3 ADDC A,B MOV R3,A CLR A ADDC A,R2 MOV R2,A RET DIVD: CLR C MOV A,R3 SUBB A,R7 MOV A,R2 SUBB A,R6 JC DVD1 SETB OV RET DVD1: MOV B,#10H DVD2: CLR C MOV A,R5 RLC A MOV R5,A MOV A,R4 RLC A MOV R4,A MOV A,R3 RLC A MOV R3,A XCH A,R2 RLC A XCH A,R2 MOV F0,C CLR C SUBB A,R7 MOV R1,A MOV A,R2 SUBB A,R6 ANL C,/F0 JC DVD3 MOV R2,A MOV A,R1 MOV R3,A INC R5 DVD3: DJNZ B,DVD2 MOV A,R4 MOV R2,A MOV A,R5 MOV R3,A CLR OV RET D457: CLR C MOV A,R4 SUBB A,R7 JC DV50 SETB OV RET DV50: MOV R6,#8 DV51: MOV A,R5 RLC A MOV R5,A MOV A,R4 RLC A MOV R4,A MOV F0,C CLR C SUBB A,R7 ANL C,/F0 JC DV52 MOV R4,A DV52: CPL C MOV A,R3 RLC A MOV R3,A DJNZ R6,DV51 MOV A,R4 ADD A,R4 JC DV53 SUBB A,R7 JC DV54 DV53: INC R3 DV54: CLR OV RET DV31: CLR C MOV A,R3 SUBB A,R7 JC DV30 SETB OV RET DV30: MOV R2,#10H DM23: CLR C MOV A,R5 RLC A MOV R5,A MOV A,R4 RLC A MOV R4,A MOV A,R3 RLC A MOV R3,A MOV F0,C CLR C SUBB A,R7 ANL C,/F0 JC DM24 MOV R3,A INC R5 DM24: DJNZ R2,DM23 MOV A,R3 ADD A,R3 JC DM25 SUBB A,R7 JC DM26 DM25: INC R5 MOV A,R5 JNZ DM26 INC R4 DM26: CLR OV RET MULS: MOV R4,#0 MOV R5,#0 LCALL MDS LCALL MULD SJMP MDSE DIVS: LCALL MDS PUSH PSW LCALL DIVD JNB OV,DVS1 POP ACC RET DVS1: POP PSW MOV R4,#0 MOV R5,#0 MDSE: JB F0,MDS2 CLR OV RET MDS: CLR F0 MOV A,R6 JNB ACC.7,MDS1 CPL F0 XCH A,R7 CPL A ADD A,#1 XCH A,R7 CPL A ADDC A,#0 MOV R6,A MDS1: MOV A,R2 JNB ACC.7,MDS3 CPL F0 MDS2: MOV A,R5 CPL A ADD A,#1 MOV R5,A MOV A,R4 CPL A ADDC A,#0 MOV R4,A MOV A,R3 CPL A ADDC A,#0 MOV R3,A MOV A,R2 CPL A ADDC A,#0 MOV R2,A MDS3: CLR OV RET SH2: MOV A,R2 ORL A,R3 JNZ SH20 RET SH20: MOV R7,#0 MOV A,R2 SH22: ANL A,#0C0H JNZ SQRH CLR C MOV A,R3 RLC A MOV F0,C CLR C RLC A MOV R3,A MOV A,R2 MOV ACC.7,C MOV C,F0 RLC A RLC A MOV R2,A INC R7 SJMP SH22 SH4: MOV A,R2 ORL A,R3 ORL A,R4 ORL A,R5 JNZ SH40 RET SH40: MOV R7,#0 MOV A,R2 SH41: ANL A,#0C0H JNZ SQRH MOV R6,#2 SH42: CLR C MOV A,R5 RLC A MOV R5,A MOV A,R4 RLC A MOV R4,A MOV A,R3 RLC A MOV R3,A MOV A,R2 RLC A MOV R2,A DJNZ R6,SH42 INC R7 SJMP SH41 SQRH: MOV A,R2 ADD A,#57H JC SQR2 ADD A,#45H JC SQR1 ADD A,#24H MOV B,#0E3H MOV R4,#80H SJMP SQR3 SQR1: MOV B,#0B2H MOV R4,#0A0H SJMP SQR3 SQR2: MOV B,#8DH MOV R4,#0D0H SQR3: MUL AB MOV A,B ADD A,R4 MOV R4,A MOV B,A MUL AB XCH A,R3 CLR C SUBB A,R3 MOV R3,A MOV A,R2 SUBB A,B MOV R2,A SQR4: SETB C MOV A,R4 RLC A MOV R6,A CLR A RLC A MOV R5,A MOV A,R3 SUBB A,R6 MOV B,A MOV A,R2 SUBB A,R5 JC SQR5 INC R4 MOV R2,A MOV R3,B SJMP SQR4 SQR5: MOV A,R4 XCH A,R2 RRC A MOV F0,C MOV A,R3 MOV R5,A MOV R4,#8 SQR6: CLR C MOV A,R3 RLC A MOV R3,A CLR C MOV A,R5 SUBB A,R2 JB F0,SQR7 JC SQR8 SQR7: MOV R5,A INC R3 SQR8: CLR C MOV A,R5 RLC A MOV R5,A MOV F0,C DJNZ R4,SQR6 MOV A,R7 JZ SQRE SQR9: CLR C MOV A,R2 RRC A MOV R2,A MOV A,R3 RRC A MOV R3,A DJNZ R7,SQR9 SQRE: RET HASC: MOV B,A LCALL HAS1 XCH A,B SWAP A HAS1: ANL A,#0FH ADD A,#90H DA A ADDC A,#40H DA A RET ASCH: CLR C SUBB A,#30H JNB ACC.4,ASH1 SUBB A,#7 ASH1: RET HBCD: MOV B,#100 DIV AB MOV R3,A MOV A,#10 XCH A,B DIV AB SWAP A ORL A,B RET HB2: CLR A MOV R3,A MOV R4,A MOV R5,A MOV R2,#10H HB3: MOV A,R7 RLC A MOV R7,A MOV A,R6 RLC A MOV R6,A MOV A,R5 ADDC A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R3 ADDC A,R3 MOV R3,A DJNZ R2,HB3 RET HBD: MOV B,#100 MUL AB RLC A CLR A ADDC A,B MOV B,#10 DIV AB SWAP A ADD A,B DA A RET HBD2: MOV R4,#4 HBD3: MOV A,R3 MOV B,#10 MUL AB MOV R3,A MOV R5,B MOV A,R2 MOV B,#10 MUL AB ADD A,R5 MOV R2,A CLR A ADDC A,B PUSH ACC DJNZ R4,HBD3 POP ACC MOV R3,A POP ACC SWAP A ORL A,R3 MOV R3,A POP ACC MOV R2,A POP ACC SWAP A ORL A,R2 MOV R2,A RET BCDH: MOV B,#10H DIV AB MOV R4,B MOV B,#10 MUL AB ADD A,R4 RET BH2: MOV A,R3 LCALL BCDH MOV R3,A MOV A,R2 LCALL BCDH MOV B,#100 MUL AB ADD A,R3 MOV R3,A CLR A ADDC A,B MOV R2,A RET BHD: MOV R2,#8 BHD0: ADD A,ACC DA A XCH A,R3 RLC A XCH A,R3 DJNZ R2,BHD0 ADD A,#0B0H JNC BHD1 INC R3 BHD1: MOV A,R3 RET BHD2: MOV R6,#10H BHD3: MOV A,R5 ADD A,R5 DA A MOV R5,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R3 RLC A MOV R3,A MOV A,R2 RLC A MOV R2,A DJNZ R6,BHD3 MOV A,R4 ADD A,#0B0H JNC BHD4 INC R3 MOV A,R3 JNZ BHD4 INC R2 BHD4: RET MM: MOV B,R7 MOVX A,@DPTR MOV R6,A MOV R7,A MOV A,DPL MOV R3,A MOV R5,A MOV A,DPH MOV R2,A MOV R4,A MOV A,B DEC A JZ MME MOV R1,A PUSH DPL PUSH DPH MM1: INC DPTR MOVX A,@DPTR MOV B,A SETB C SUBB A,R6 JC MM2 MOV R6,B MOV R2,DPH MOV R3,DPL SJMP MM3 MM2: MOV A,B CLR C SUBB A,R7 JNC MM3 MOV R7,B MOV R4,DPH MOV R5,DPL MM3: DJNZ R1,MM1 POP DPH POP DPL MME: RET MMS: MOV B,R7 MOVX A,@DPTR MOV R6,A MOV R7,A MOV A,DPL MOV R3,A MOV R5,A MOV A,DPH MOV R2,A MOV R4,A MOV A,B DEC A JZ MMSE MOV R1,A PUSH DPL PUSH DPH MMS1: INC DPTR MOVX A,@DPTR MOV B,A SETB C SUBB A,R6 JZ MMS4 JNB OV,MMS2 CPL ACC.7 MMS2: JB ACC.7,MMS4 MOV R6,B MOV R2,DPH MOV R3,DPL SJMP MMS7 MMS4: MOV A,B CLR C SUBB A,R7 JNB OV,MMS6 CPL ACC.7 MMS6: JNB ACC.7,MMS7 MOV R7,B MOV R4,DPH MOV R5,DPL MMS7: DJNZ R1,MMS1 POP DPH POP DPL MMSE: RET FDS1: MOV B,A MOV R2,#0 MOV A,R7 MOV R6,A FD11: MOV A,R2 MOVC A,@A+DPTR CJNE A,B,FD12 CLR OV MOV A,R2 RET FD12: INC R2 DJNZ R6,FD11 SETB OV RET FDS2: MOV A,R7 MOV R6,A MOV R2,#0 FD21: CLR A MOVC A,@A+DPTR XRL A,R4 JNZ FD22 MOV A,#1 MOVC A,@A+DPTR XRL A,R5 JNZ FD22 CLR OV MOV A,R2 RET FD22: INC DPTR INC DPTR INC R2 DJNZ R6,FD21 SETB OV RET FDD1: MOV B,A MOV R2,#0 MOV A,R7 DEC A MOV R3,A FD61: CLR C MOV A,R3 SUBB A,R2 JC FD69 RRC A ADD A,R2 MOV R4,A MOVC A,@A+DPTR CJNE A,B,FD65 CLR OV MOV A,R4 RET FD65: JC FD68 MOV A,R4 DEC A MOV R3,A SJMP FD61 FD68: MOV A,R4 INC A MOV R2,A SJMP FD61 FD69: SETB OV RET FDD2: MOV R2,#0 MOV A,R7 DEC A MOV R3,A MOV R6,DPH MOV R7,DPL FD81: CLR C MOV A,R3 SUBB A,R2 JC FD89 RRC A ADD A,R2 MOV R1,A MOV DPH,R6 CLR C RLC A JNC FD82 INC DPH FD82: ADD A,R7 MOV DPL,A JNC FD83 INC DPH FD83: CLR A MOVC A,@A+DPTR MOV B,R4 CJNE A,B,FD84 MOV A,#1 MOVC A,@A+DPTR MOV B,R5 CJNE A,B,FD84 MOV A,R1 CLR OV RET FD84: JC FD86 MOV A,R1 DEC A MOV R3,A SJMP FD81 FD86: MOV A,R1 INC A MOV R2,A SJMP FD81 FD89: MOV DPH,R6 MOV DPL,R7 SETB OV RET DDM1: MOV A,R7 MOV R2,A PUSH DPH PUSH DPL CLR A MOV R4,A MOV R5,A DM11: MOVX A,@DPTR ADD A,R5 MOV R5,A JNC DM12 INC R4 DM12: INC DPTR DJNZ R2,DM11 LCALL D457 MOV A,R3 POP DPL POP DPH RET DDM2: MOV A,R7 MOV R2,A PUSH DPL PUSH DPH CLR A MOV R3,A MOV R4,A MOV R5,A DM20: MOVX A,@DPTR MOV B,A INC DPTR MOVX A,@DPTR INC DPTR ADD A,R5 MOV R5,A MOV A,B ADDC A,R4 MOV R4,A JNC DM21 INC R3 DM21: DJNZ R2,DM20 POP DPH POP DPL LJMP DV31 XR1: MOV R4,DPH MOV R5,DPL MOV A,R7 JZ XR10 INC R6 XR10: MOV B,#0 XR11: MOVX A,@DPTR XRL B,A INC DPTR DJNZ R7,XR11 DJNZ R6,XR11 MOV DPH,R4 MOV DPL,R5 MOV A,B RET XR2: MOV R4,DPH MOV R5,DPL MOV A,R7 JZ XR20 INC R6 XR20: CLR A MOV R2,A MOV R3,A XR21: MOVX A,@DPTR XRL A,R2 MOV R2,A INC DPTR MOVX A,@DPTR XRL A,R3 MOV R3,A INC DPTR DJNZ R7,XR21 DJNZ R6,XR21 MOV DPH,R4 MOV DPL,R5 RET SORT: MOV A,R7 MOV R5,A SRT1: CLR F0 MOV A,R5 DEC A MOV R5,A MOV R2,A JZ SRT5 MOV A,R0 MOV R6,A SRT2: MOV A,@R0 MOV R3,A INC R0 MOV A,@R0 MOV R4,A CLR C SUBB A,R3 JNC SRT4 SETB F0 MOV A,R3 MOV @R0,A DEC R0 MOV A,R4 MOV @R0,A INC R0 SRT4: DJNZ R2,SRT2 MOV A,R6 MOV R0,A JB F0,SRT1 SRT5: RET END