home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 5 / DATAFILE_PDCD5.iso / utilities / a / asm1 / !ASM / Options / Macros < prev    next >
Text File  |  1996-07-26  |  1KB  |  100 lines

  1.  
  2. ;
  3. ; Macros file
  4. ; Wow.
  5. ;
  6.  
  7. macro exg
  8. {
  9.   #if p_num>2
  10.     #error Too many arguments
  11.   #endif
  12.   #if p_num<2
  13.     #error Too few arguments
  14.   #endif
  15.   eor p0,p0,p1
  16.   eor p1,p0,p1
  17.   eor p0,p0,p1
  18. }
  19.  
  20. macro div
  21. {
  22.   #if p_num>3
  23.     #error Too many arguments
  24.   #endif
  25.   #if p_num<3
  26.     #error Too few arguments
  27.   #endif
  28.   
  29.   #if p0==p1
  30.     #error Registers must be different
  31.   #endif
  32.   #if p0==p2
  33.     #error Registers must be different
  34.   #endif
  35.   #if p1==p2
  36.     #error Registers must be different
  37.   #endif
  38.   
  39. ; Division code by Hugo Fiennes
  40.   mov temp_reg,#0
  41.   cmp p1,#0
  42.    rsblt p1,p1,#0
  43.    sublt temp_reg,temp_reg,#1
  44.   cmp p2,#0
  45.    rsblt p2,p2,#0
  46.    mvnlt temp_reg,temp_reg
  47.   str temp_reg,_minusflag
  48.   
  49.   mov  temp_reg,#32
  50.   mov  p0,#0
  51. ._loop
  52.   adds p1,p1,p1
  53.   adcs p0,p0,p0
  54.   cmp  p0,p2
  55.   subge  p0,p0,p2
  56.   addge  p1,p1,#1         
  57.   sub  temp_reg,temp_reg,#1
  58.   cmp  temp_reg,#0
  59.   bne  _loop        
  60.     
  61.   ldr temp_reg,_minusflag
  62.   cmp temp_reg,#0
  63.   rsbne p1,p1,#0 
  64.          
  65.   mov p0,p1
  66.   b _end
  67. ._minusflag dcd 0
  68. ._end
  69. }
  70.  
  71. macro fstdiv
  72. {
  73. ; Division code by Hugo Fiennes
  74.   mov temp_reg,#0
  75.   cmp p1,#0
  76.    rsblt p1,p1,#0
  77.    sublt temp_reg,temp_reg,#1
  78.   cmp p2,#0
  79.    rsblt p2,p2,#0
  80.    mvnlt temp_reg,temp_reg
  81.  
  82.   mov  p0,#0
  83.  
  84. ._loop
  85. #rept 32
  86.   adds p1,p1,p1
  87.   adcs p0,p0,p0
  88.   cmp  p0,p2
  89.   subge  p0,p0,p2
  90.   addge  p1,p1,#1         
  91. #endr
  92.     
  93.   cmp temp_reg,#0
  94.   rsbne p1,p1,#0 
  95.          
  96.   mov p0,p1
  97.  
  98. ._end
  99. }
  100.