blob: 1fc53e966deb56ab848a8fc91c9e7f9e5ed8d77c [file] [log] [blame]
;
; strecpy: Copy DS:SI -> ES:DI up to and including a null byte;
; on exit SI and DI point to the byte *after* the null byte.
; BP holds a pointer to the first byte beyond the end of the
; target buffer; return with CF=1 if target buffer overflows;
; the output is still zero-terminated.
;
section .text
strecpy:
push ax
push bp
dec bp
dec bp
.loop: lodsb
stosb
and al,al ; CF=0
jz .done
cmp bp,di ; CF set if BP < DI
jnc .loop
; Zero-terminate overflow string
mov al,0 ; Avoid changing flags
stosb
.done:
pop bp
pop ax
ret