Subversion Repositories Kolibri OS

Rev

Rev 1467 | Rev 7577 | Go to most recent revision | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1467 Rev 3244
Line 49... Line 49...
49
; Copyright (c) 2009 Igor Afanasiev
49
; Copyright (c) 2009 Igor Afanasiev
Line 50... Line 50...
50
 
50
 
51
linlen:
51
linlen:
52
	push	ecx edi
52
	push	ecx edi
53
	pushfd
53
	pushfd
54
	cld				; !
54
	cld
55
	mov	ecx,eax
55
	mov	ecx,eax
56
 inc ecx
56
	inc ecx
57
	mov	edi,esi 		; find terminating zero
57
	mov	edi,esi 		; find terminating zero
58
	mov	al,13
58
	mov	al,13
Line 61... Line 61...
61
	sub	eax,esi
61
	sub	eax,esi
62
	dec	eax
62
	dec	eax
63
	popfd
63
	popfd
64
	pop	edi ecx
64
	pop	edi ecx
65
	ret
65
	ret
-
 
66
 
-
 
67
;description:
-
 
68
; проверяет содержится ли строка str1 в строке str0
-
 
69
; проверка делается только начиная с первых символов, указанных в str0 и str1
-
 
70
; пример 1: если str0='aaabbbccc', str1='bbb' совпадения не будет
-
 
71
; пример 2: если str0='aaabbbccc', str1='aaa' совпадение будет
-
 
72
;output:
-
 
73
; al = 0 если строка str1 содержится в str0
-
 
74
; al != 0 если строка str1 не содержится в str0
-
 
75
align 4
-
 
76
proc str_instr uses edi esi, str0:dword, str1:dword
-
 
77
	;xor eax,eax
-
 
78
	mov edi,[str0]
-
 
79
	mov esi,[str1]
-
 
80
	cld
-
 
81
	@@:
-
 
82
		mov al,[esi]
-
 
83
		cmp al,0
-
 
84
		je .e1
-
 
85
		inc esi
-
 
86
		scasb ;сравниваем символы
-
 
87
	jz @b ;если совпали, то переходим к сравнению следующих
-
 
88
	;сюда попадаем если строки не совпали
-
 
89
	sub al,[edi-1]
-
 
90
	.e1: ;сюда попадаем если строка str1 (esi) закончилась
-
 
91
	ret
66
;%endif
92
endp