QMOVE.ASM
上传用户:sunrenlu
上传日期:2022-06-13
资源大小:1419k
文件大小:1k
源码类别:

操作系统开发

开发平台:

DOS

  1. PAGE    66,132
  2. ;
  3. ;
  4. ;
  5. ;
  6. ;
  7. ;
  8. ;
  9. ;
  10. ;  qmove.asm
  11. ;
  12. ;  Efficient move operation.  Does not handle segment wraps!!!!
  13. ;
  14. ;
  15. ;  Usage :
  16. ;     move( soff, sseg, doff, dseg, count )
  17. ;     unsigned int soff; /* source offset */
  18. ;     unsigned int sseg; /* source segment */
  19. ;     unsigned int doff; /* destination offset */
  20. ;     unsigned int dseg; /* destination segment */
  21. ;     unsigned int count; /* byte count */
  22. ;
  23. ;  (c) 1984 Erick Engelke
  24. ;
  25. ;  version
  26. ;
  27. ;    0.2    31-Oct-1990   E. P. Engelke  - brief version
  28. ;
  29. ;
  30. include masmdefs.hsm
  31. include model.hsm
  32. codedef QMOVE
  33. datadef
  34. cstart  QMOVE
  35. cpublic qmove
  36. mov DX,DS
  37. mov BX,ES ;save segment registers
  38.         lds     SI, +@AB+0[BP]
  39.         les     DI, +@AB+4[BP]
  40.         mov     CX, +@AB+8[BP]          ;byte count
  41.         shr     CX, 1
  42.         cld
  43.         rep     movsw
  44.         jnc     @1
  45.         movsb
  46. @1:
  47. mov DS,DX
  48. mov ES,BX
  49. creturn qmove
  50. cend    QMOVE
  51.         end