home *** CD-ROM | disk | FTP | other *** search
- ; Move a near string into a far string.
- ; Terminate far string with 2 consecutive zeros. (max size 64K)
- ; void strXcopy(char far *Dest, char *Source);
- ; For Turbo C 2.0, small/tiny model.
- ; Written and tested with Turbo Assembler 1.0
- ; By Goh King Hwa, 20 Dec 1989.
-
- _TEXT segment byte public 'CODE'
- assume cs:_TEXT
- _strXcpy proc near
- push bp
- mov bp,sp
- push si
- push di
-
- cld ;set for auto-increment
- les di,dword ptr [bp+4] ;get dest far address
- mov si,word ptr [bp+8] ;get source near address
- doLoop:
- lodsb ;fetch one byte
- or al,al ;is it end of string?
- jz exit ;if so, exit
- stosb ;move it into the destination
- jmp short doLoop
- exit:
- stosb ;double null terminate the far string
- stosb
- pop di
- pop si
- pop bp
- ret
- _strXcpy endp
- _TEXT ends
-
- public _strXcpy
- end
-