home *** CD-ROM | disk | FTP | other *** search
- ;
- ;THIS IS A FILE OF BCD.ASM
- ;
- BCDC: MOV A,@R0 ;THIS IS SUBROUTING 6-1
- SWAP A
- INC R0
- XCHD A,@R0
- MOV @R1,A
- XCHD A,@R0
- INC R0
- INC R1
- DJNZ R3,BCDC
- RET
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- CBCD: MOV A,@R0 ;THIS IS SUBROUTING 6-2
- SWAP A
- ANL A,#0FH
- MOV @R1,A
- MOV A,@R0
- INC R1
- ANL A,#0FH
- MOV @R1,A
- INC R0
- INC R1
- DJNZ R3,CBCD
- RET
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- CCMP: MOV A,R0 ;THIS IS SUBROUTING 6-3
- ADD A,R2
- MOV R0,A
- DEC R0
- CCML: MOV A,@R0
- CPL C
- CPL A
- ADDC A,#9AH
- MOV @R0,A
- DEC R0
- DJNZ R2,CCML
- RET
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ; ;THIS IS SUBROUTING 6-4
- CADD: MOV A,R0 ;N BYTE BCD ADD
- ADD A,R3 ;NOT SIGN
- MOV R0,A
- DEC R0
- MOV A,R1
- ADD A,R3
- MOV R1,A
- DEC R1
- CLR C
- CADL: MOV A,@R0
- ADDC A,@R1
- DA A
- MOV @R0,A
- DEC R0
- DEC R1
- DJNZ R3,CADL
- RET
- ;
- ; ;THIS IS SUBROUTING 6-5 ;
- CSUB1: MOV A,R0 ;N BYTE N SIGN BCD SUB
- ADD A,R3
- MOV R0,A
- DEC R0
- MOV A,R1
- ADD A,R3
- MOV R1,A
- DEC R1
- SETB C
- CSUL1: CLR A
- ADDC A,#99H
- SUBB A,@R1
- ADD A,@R0
- DA A
- MOV @R0,A
- DEC R0
- DEC R1
- DJNZ R3,CSUL1
- RET
- ;
- ;
- ;
- ;
- ; THIS IS SUBROUTING ;THIS IS SUBROUTING 6-6
- CSUB2: MOV A,R0 ;N BYTE N SIGN
- ADD A,R3 ;BCD SUB
- MOV R0,A
- DEC R0
- MOV A,R1
- ADD A,R3
- MOV R1,A
- DEC R1
- CLR C
- CPL C
- CSUL2: MOV A,@R1
- CPL A
- ADDC A,#9AH
- ADD A,@R0
- DA A
- MOV @R0,A
- DEC R0
- DEC R1
- DJNZ R3,CSUL2
- RET
- ;
- ;
- ;
- ;
- ; ;THIS IS SUBROUTING 6-8
- CDSUB: MOV A,@R1 ;N BYTE O SIGN BCD SUB
- CPL A
- ANL A,#1
- MOV @R1,A
- CDADD: MOV A,R3
- MOV R2,A
- MOV A,@R0
- XRL A,@R1
- ANL A,#01H
- INC R0
- INC R1
- JNZ CDSB
- LCALL CADD
- RET
- CDSB: LCALL CSUB2
- JC CDRT
- INC R0
- INC R1
- LCALL CCMP
- MOV A,@R1
- MOV @R0,A
- CDRT: CLR C
- RET
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ; ;THIS IS SUBROUTING 6-7
- CMUL: MOV A,R3 ;N BYTES BCD MUL
- MOV R6,A ;R6 = n
- ADD A,R3
- MOV R2,A ;R2 = 2n
- MOV A,R3
- ADD A,R0
- MOV R0,A
- MOV A,R1
- ADD A,R3
- DEC A
- MOV R1,A
- CLR A
- CMUL1: MOV @R0,A
- INC R0
- DJNZ R6,CMUL1
- MOV A,R2
- MOV R6,A
- DEC R0
- CMUL2: CLR A
- CMUL3: XCH A,@R0 ;(B,S) * 10
- SWAP A
- XCHD A,@R0
- XCH A,@R0
- DEC R0
- DJNZ R2,CMUL3
- MOV R7,A ;R7 = bi
- JZ CMUL7
- CMUL4: MOV A,R3
- MOV R2,A
- ADD A,R3
- ADD A,R0
- MOV R0,A
- CLR C
- CMUL5: MOV A,@R0 ;S + A -> S
- ADDC A,@R1
- DA A
- MOV @R0,A
- DEC R0
- DEC R1
- DJNZ R2,CMUL5
- MOV A,R3
- MOV R2,A
- CMUL6: CLR A
- ADDC A,@R0
- DA A
- MOV @R0,A
- DEC R0
- DJNZ R2,CMUL6
- MOV A,R3
- ADD A,R1
- MOV R1,A
- DJNZ R7,CMUL4
- CMUL7: MOV A,R3
- ADD A,R3
- MOV R2,A
- ADD A,R0
- MOV R0,A
- DJNZ R6,CMUL2
- RET
- ;
- ;
- ;
- ;
- ;
- ;
- ;
- ; ;THIS IS SUBROUTING 6-8
- CDIV: MOV A,R3 ;2N BYTE BCD / N BYTE BCD
- ADD A,R3
- MOV R7,A ;R7 = 2n
- DEC R0
- DEC R1
- CDIV1: MOV A,R3
- ADD A,R3
- MOV R2,A ;R2 = 2n
- ADD A,R0
- MOV R0,A
- CLR A
- CDIV2: XCH A,@R0
- SWAP A
- XCHD A,@R0
- XCH A,@R0
- DEC R0
- DJNZ R2,CDIV2
- MOV R4,A
- CDIV3: MOV A,R3
- MOV R6,A ;R6 = n
- ADD A,R0
- MOV R0,A
- ADD A,R3
- XCH A,R0
- INC @R0
- XCH A,R0
- MOV A,R1
- ADD A,R3
- MOV R1,A
- SETB C
- CDIV4: CLR A
- ADDC A,#99H
- SUBB A,@R1
- ADD A,@R0
- DA A
- MOV @R0,A
- DEC R0
- DEC R1
- DJNZ R6,CDIV4
- CPL C
- MOV A,R4
- SUBB A,#0
- MOV R4,A
- JNC CDIV3
- MOV A,R3
- MOV R6,A
- ADD A,R0
- MOV R0,A
- ADD A,R3
- XCH A,R0
- DEC @R0
- XCH A,R0
- MOV A,R1
- ADD A,R3
- MOV R1,A
- CLR C
- CDIV5: MOV A,@R0
- ADDC A,@R1
- DA A
- MOV @R0,A
- DEC R0
- DEC R1
- DJNZ R6,CDIV5
- DJNZ R7,CDIV1
- RET
- ;
- ;
- ;