kolibrios-gitea/programs/media/infinity_mixer/string.INC

95 lines
2.3 KiB
Plaintext
Raw Normal View History

;****************************************
;* input: esi = pointer to string *
;* output: ecx = length of the string *
;****************************************
strlen:
push eax esi
xor ecx, ecx
@@:
lodsb
or al, al
jz @f
inc ecx
jmp @b
@@:
pop esi eax
ret
;*************************************************
;* input: esi = pointer to the src string *
;* edi = pointer to the dest string *
;* ecx = number of bytes to copy *
;*************************************************
strncpy:
push eax ecx esi edi
@@:
lodsb
stosb
or al, al
jz @f
dec ecx
jz @f
jmp @b
@@:
pop edi esi ecx eax
ret
;*************************************************
;* input: esi = pointer to the src string *
;* edi = pointer to the dest string *
;*************************************************
strcpy:
push esi edi
rep movsb
pop edi esi
ret
;*************************************************
;* input: esi = pointer to the src string *
;* edi = pointer to the dest string *
;*************************************************
strcat:
push esi
call strlen
add esi, ecx
call strcpy
pop esi
ret
;*************************************************
;* input: esi = pointer to the src string *
;* edi = pointer to the dest string *
;* ecx = number of bytes to copy *
;*************************************************
strncat:
push edi
push ecx esi
mov esi, edi
call strlen
add edi, ecx
pop esi ecx
call strncpy
pop edi
ret
;*************************************************
;* input: edi = pointer to the dest string *
;* al = byte to set the string to *
;*************************************************
;strset:
; push edi
; rep stosb
; pop edi
; ret
;*************************************************
;* input: edi = pointer to the dest string *
;* al = byte to set the string to *
;* ecx = number of bytes to set *
;*************************************************
strnset:
push edi ecx
repe stosb
pop ecx edi
ret