Subversion Repositories Kolibri OS

Rev

Rev 1467 | Rev 7577 | Go to most recent revision | Show entire file | Ignore 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
59
	repne	scasb
59
	repne	scasb
60
	mov	eax,edi 		; calculate string length
60
	mov	eax,edi 		; calculate string length
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
-
 
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) закончилась
65
	ret
91
	ret