; 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 STR R0,minusflag
MOV R0,#32. MOV R1,#0\loop ADDS R2,R2,R2
ADCS R1,R1,R1 CMP R1,R3 SUBGE R1,R1,R3 ADDGE R2,R2,#1 SUB R0,R0,#1 CMP R0,#0 BNE \loop LDR R0,minusflag CMP R0,#0 RSBNE R2,R2,#0 STR R2,%1 .ENDM