; 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