; 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 

AltStyle によって変換されたページ (->オリジナル) /