home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / asmutil / stdlib.zip / COPYSET.ASM < prev    next >
Assembly Source File  |  1990-07-21  |  863b  |  59 lines

  1. stdlib        segment    para public 'slcode'
  2.         assume    cs:stdlib
  3. ;
  4. ;
  5. ; CopySet-    Copies one set to another.
  6. ;
  7. ; inputs:
  8. ;
  9. ;    ES:DI-  Points at the destination set (at its mask byte).
  10. ;    DX:SI-    Points at the mask byte of the source set.
  11. ;
  12. ;
  13. ;
  14.         public    sl_CopySet
  15. ;
  16. sl_CopySet    proc    far
  17.         push    ds
  18.         push    es
  19.         push    ax
  20.         push    cx
  21.                 push    dx
  22.         push    si
  23.         push    di
  24.         mov    ds, dx
  25. ;
  26.         mov    ah, es:[di]        ;Get mask bytes
  27.         mov    al, [si]
  28.         mov    dl, ah
  29.         not    dl
  30.         add    si, 8            ;Skip to start of set
  31.                 add    di, 8
  32.         mov    cx, 256
  33. CpySetLp:    test    al, [si]
  34.         jnz    SetBit
  35.         and    es:[di], dl
  36.         inc    si
  37.         inc    di
  38.         loop    CpySetLp
  39.         jmp    CpySetDone
  40. ;
  41. SetBit:        or    es:[di], ah
  42.         inc    si
  43.         inc    di
  44.         loop    CpySetLp
  45. ;
  46. CpySetDone:    pop    di
  47.         pop    si
  48.         pop    dx
  49.         pop    cx
  50.         pop    ax
  51.         pop    es
  52.         pop    ds
  53.         ret
  54. sl_CopySet    endp
  55. ;
  56. ;
  57. stdlib        ends
  58.         end
  59.