assembler
Moderátor: Moderátoři
assembler
Děkuji za odpověď.
Kód: Vybrat vše
;------------------------------------------------------------------------------
; Duplikace stringu
; V EAX vraci adresu duplikatu nebo 0 pri chybe
;------------------------------------------------------------------------------
PUBLIC StrDup
StrDup PROC pStr:DWORD
push ECX
push ESI
push EDI
call StrLen, pStr
push EAX
call LocalAlloc, LMEM_FIXED, EAX; Alokuje pamet na cilovy string
pop ECX ; ECX = delka stringu
or EAX,EAX
jz lo_err
mov EDI,EAX ; EDI = adresa ciloveho stringu
mov ESI,pStr ; ESI = adresa zdrojoveho stringu
rep movsb ; Zkopiruje string
lo_ret: pop EDI
pop ESI
pop ECX
ret
lo_err: xor EAX,EAX
jmp lo_ret
StrDup ENDPale nebude se kopírovat celej string