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 |