home *** CD-ROM | disk | FTP | other *** search
/ Media Share 9 / MEDIASHARE_09.ISO / progmisc / hellsrc.zip / SLIDEBYT.RT < prev    next >
Text File  |  1992-04-27  |  1KB  |  48 lines

  1. public  _slidebytes
  2.  
  3. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  4. ; Slide a block of bytes closer to another block in value
  5. ; In:
  6. ;   BL - max value to slide by (usually 1)
  7. ;   ECX - number of bytes to slide
  8. ;   ESI - block to slide towards
  9. ;   EDI - block to slide
  10. ; Out:
  11. ;   CF=1 - no changes made
  12. ;   CF=0 - at least one change made
  13. ;░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░░
  14. _slidebytes:
  15.         pushad
  16.         xor bh,bh
  17. slidebytesml:
  18.         mov al,[edi]
  19.         mov ah,[esi]
  20.         cmp al,ah
  21.         je short slidebytesmlc
  22.         mov bh,1
  23.         jb short slidebytesmlf0
  24.         sub ah,al
  25.         neg ah
  26.         cmp ah,bl
  27.         jbe short slidebytesmlf2
  28.         mov ah,bl
  29. slidebytesmlf2:
  30.         neg ah
  31.         jmp short slidebytesmlf1
  32. slidebytesmlf0:
  33.         sub ah,al
  34.         cmp ah,bl
  35.         jbe short slidebytesmlf1
  36.         mov ah,bl
  37. slidebytesmlf1:
  38.         add al,ah
  39.         mov [edi],al
  40. slidebytesmlc:
  41.         inc edi
  42.         inc esi
  43.         loop slidebytesml
  44.         sub bh,1
  45.         popad
  46.         ret
  47.  
  48.