home *** CD-ROM | disk | FTP | other *** search
/ Really Useful CD 1 / ReallyUsefulCD1.iso / extras / progutils / arm_divide / div_short < prev    next >
Encoding:
Text File  |  1991-06-09  |  776 b   |  35 lines

  1. ; division routine
  2. ; 1. calculate flag if result is negate and convert operands to positiv
  3. ; 2. second "divide" with unsigned suczessive Approximation  
  4. ; 3. fix the sign of result 
  5.  
  6.         .MACRO INTdivide
  7.          LDR R2,%2
  8.          LDR R3,%3 
  9.  
  10.          MOV R0,#0
  11.          CMP R2,#0
  12.           RSBLT R2,R2,#0
  13.           SUBLT R0,R0,#1
  14.          CMP R3,#0
  15.           RSBLT R3,R3,#0
  16.           MVNLT R0,R0
  17.          STR R0,minusflag
  18.  
  19.          MOV  R0,#32.
  20.          MOV  R1,#0
  21. \loop    ADDS R2,R2,R2
  22.          ADCS R1,R1,R1
  23.          CMP  R1,R3
  24.          SUBGE  R1,R1,R3
  25.          ADDGE  R2,R2,#1         
  26.          SUB  R0,R0,#1
  27.          CMP  R0,#0
  28.          BNE  \loop        
  29.     
  30.          LDR R0,minusflag
  31.          CMP R0,#0
  32.          RSBNE R2,R2,#0 
  33.          STR R2,%1
  34.         .ENDM 
  35.