home *** CD-ROM | disk | FTP | other *** search
- ; division routine
- ; 1. calculate flag if result is negate and convert operands to positiv
- ; 2. second "divide" with unsigned suczessive Approximation
- ; 3. fix the sign of result
-
- .MACRO INTdivide
- LDR R2,%2
- LDR R3,%3
-
- MOV R0,#0
- CMP R2,#0
- RSBLT R2,R2,#0
- SUBLT R0,R0,#1
- CMP R3,#0
- RSBLT R3,R3,#0
- MVNLT R0,R0
-
- MOV R1,#0
-
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l2
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l3
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l4
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l5
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l6
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l7
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l8
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l9
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l10
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l11
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l12
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l13
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l14
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l15
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l16
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l17
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l18
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l19
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l20
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l21
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l22
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l23
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l24
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l25
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l26
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l27
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l28
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l29
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l30
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l31
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
- \l32
- ADDS R2,R2,R2
- ADCS R1,R1,R1
- CMP R1,R3
- SUBGE R1,R1,R3
- ADDGE R2,R2,#1
-
- CMP R0,#0
- RSBNE R2,R2,#0
- STR R2,%1
- .ENDM
-