home *** CD-ROM | disk | FTP | other *** search
- stdlib segment para public 'slcode'
- assume cs:stdlib
- ;
- ;
- ; strcpy- Copies string pointed at by es:di to string pointed at by dx:si.
- ; (Sorry for the ackward use of registers, this matches the rest
- ; of the standard library though).
- ;
- ; inputs:
- ; es:di- Zero-terminated source string.
- ; dx:si- Buffer for destination string.
- ;
- ; outputs: es:di- Points at destination string.
- ;
- ; Note: The destination buffer must be large enough to hold the string and
- ; zero terminating byte.
- ;
- public sl_strcpy
- ;
- sl_strcpy proc far
- push ds
- push cx
- push ax
- pushf
- push si
- ;
- cld
- mov al, 0
- mov cx, 0ffffh
- push di
- repne scasb
- pop di
- neg cx
- mov ax, es
- mov ds, ax
- mov es, dx
- xchg si, di
- dec cx
- shr cx, 1
- jnc CpyWrd
- lodsb
- stosb
- CpyWrd: rep movsw
- ;
- DidByte: pop si
- popf
- pop ax
- pop cx
- pop ds
- mov es, dx
- mov di, si
- ret
- sl_strcpy endp
- ;
- ;
- stdlib ends
- end
-