; M13_COPYSTR.ASM ; @topic W140220 Lab M13 demo, invoking ASM procedure from C ; @brief <a href="http:;www.c-jump.com/bcc/c261c/MLabs/M13highlvl/M13highlvl.html" target="_blank">Using Assembly with High-Level Languages</a> .586P .MODEL FLAT, stdcall ; Flat memory model PUBLIC COPYSTR _TEXT SEGMENT ; Procedure for copying the null-terminated source string to the target string. ; ; Input: ; str_dest...Target string [ EBP + 08H ] ; str_src....Source string [ EBP + 0CH ] ; Output: ; EAX........address of the target string ; ; WARNING! target string length is unchecked ; COPYSTR PROC str_dest: DWORD, str_src: DWORD MOV ESI, str_src ; DWORD PTR [ EBP + 0CH ] MOV EDI, str_dest ; DWORD PTR [ EBP + 08H ] L1: MOV AL, BYTE PTR [ESI] MOV BYTE PTR [EDI], AL CMP AL, 0 JE L2 INC ESI INC EDI JMP L1 L2: MOV EAX, DWORD PTR [ EBP + 08H ] RET COPYSTR ENDP _TEXT ENDS END