! BP not needed
	.text
	.globl	memcpy
memcpy:
	mov	bx, sp			! cannot use SP directly
	push	si			| Must preserve SI and DI
	push	di
	mov	cx, [bx + 8]		| length
	mov	si, [bx + 6]		| source
	mov	di, [bx + 4]		| destination
memcpy.copy_byte:
	lodsb		| Load byte from SI into AX and increment SI
	stosb		| Store the byte in AX at DI and increment DI
	loop	memcpy.copy_byte	| Decrement CX and loop again if not zero
	pop	di			| Restore saved registers
	pop	si
	ret
