home *** CD-ROM | disk | FTP | other *** search
/ Aminet 18 / aminetcdnumber181997.iso / Aminet / dev / asm / AsmSort.lha / _InsertSort.s < prev    next >
Encoding:
Text File  |  1997-01-22  |  687 b   |  46 lines

  1.  
  2. ; Insert sort in MC68020+ ASM.
  3. ; (c) Mattias Nilsson (c-lous@freenet.hut.fi)
  4. ;
  5. ; Sorts an array of 16 bit INTS.
  6.  
  7. ListSize    =    256
  8.  
  9.     xdef    _InsertSort
  10.  
  11.  
  12. _InsertSort:
  13.  
  14. ; Create some "random" numbers
  15.     Lea.l    List(Pc),a0
  16.     Move.l    #ListSize-1,d7
  17. .Loop:    Move.w    $dff006,d0
  18.     Muls    d7,d0
  19.     Lsr.w    #7,d0
  20.     Move.w    d0,(a0)+
  21.     Dbf    d7,.Loop
  22.  
  23.  
  24. ; Insert sort the list.
  25.  
  26.     Lea.l    List(Pc),a0
  27.     MoveQ    #0,d7            ; i
  28. .Loop1:    Move.l    d7,d5            ; d5=mp=i
  29. .Loop2:    Tst.l    d5
  30.     Beq.s    .OutLoop2
  31.     Move.w    (a0,d5.w*2),d0
  32.     Cmp.w    -2(a0,d5.w*2),d0
  33.     Bhi.w    .OutLoop2
  34.  
  35.     Move.w    -2(a0,d5.w*2),(a0,d5.w*2)
  36.     Move.w    d0,-2(a0,d5.w*2)
  37.     Subq.l    #1,d5
  38.     Bra.s    .Loop2
  39. .OutLoop2:
  40.     Addq.l    #1,d7
  41.     Cmp.l    #ListSize,d7
  42.     Blo.s    .Loop1
  43.     Rts
  44.  
  45. List:    Ds.w    ListSize
  46.