home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS - Coast to Coast / simteldosarchivecoasttocoast2.iso / asmutil / stdlib.zip / STRSET2.ASM < prev    next >
Assembly Source File  |  1990-07-16  |  1KB  |  63 lines

  1. stdlib        segment    para public 'slcode'
  2.         assume    cs:stdlib
  3. ;
  4.         extrn    sl_malloc:far
  5. ;
  6. ;
  7. ; strset2-     Allocates a string containing CX+1 characters and initializes
  8. ;        all but the last byte to the character passed in AL.  Zero
  9. ;        terminates the entire string.
  10. ;
  11. ; inputs:
  12. ;
  13. ;    AL-    Character to copy.
  14. ;    CX-    # of characters in new string.
  15. ;
  16. ; outputs:
  17. ;
  18. ;    es:di-    Points at newly created string (if allocated).
  19. ;
  20. ;    carry=0 if no error creating string.
  21. ;    carry=1 if insufficient memory to allocate storage for string.
  22. ;
  23. ;
  24. ;
  25. ;
  26.         public    sl_strset2
  27. ;
  28. sl_strset2    proc    far
  29.         pushf
  30.         push    ax
  31.         push    cx
  32. ;
  33.         cld
  34.                 inc    cx            ;Include zero byte at EOS.
  35.         call    sl_malloc        ;Allocate space for string
  36.         jc    ss2sc            ;Branch if insufficent memory.
  37. ;
  38.         pop    cx            ;Retrieve count.
  39.         push    cx
  40.         push    di            ;Save ptr to free memory
  41.     rep    stosb                ;Fill string with char in AL.
  42.         mov    byte ptr es:[di], 0    ;Zero terminate
  43.         pop    di
  44. ;
  45. ss2cc:        pop    cx
  46.         pop    ax
  47.         popf
  48.                 clc
  49.         ret
  50.  
  51. ss2sc:        pop    cx
  52.         pop    ax
  53.         popf
  54.         stc
  55.         ret
  56. sl_strset2    endp
  57. ;
  58. ;
  59. ;
  60. ;
  61. stdlib        ends
  62.         end
  63.