; ; 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