Подскажите плиз как можно осуществить поиск одной строчки внутри другой? причем не важна позиция искомой строчки, важен сам факт ее нахождения...
1) тупо: cmpsb - ищешь первый символ, дальше посимвольное сравнение. 2) были какие-то специальные алгоритмы для поиска подстрок, кажется с хешированием чето связано
Если интересует реализация - BMSearch (алгоритм Бойера-Мура) & K°. Если теория — гугли по сабжу: материала много, в т.ч. и русскоязычного (тот же АлгоЛист).
гы, вот теории как раз не над.... Инфы действительно навалом, но никак не на ассемблере... Что неужели ни у кого нет? ЗЫ: Как сравнить полученную текстовую строчку с текстовой переменной?
Code (Text): mov esi, offset buf1 mov edi, offset buf2 mov ecx, buf_len repe cmpsb test ecx, ecx jnz test_failed ; test ok jmp done test_failed: ; test failed done: ... buf1 db 'Hello, World', 0 buf_len equ $-buf1 buf2 db 'Hello, world!, 0 Можно даже без TEST ECX,ECX - CMPSB ставит ZF
ммм.... спасибо! А что может вызвать такой вот запрет: на: Code (Text): 330: push offset sig_f1 331: call lstrlenA@4 332: 333: Mov ecx, eax 334: Mov esi, offset sig_f1 335: Mov edi, offset fin.nam 336: Rep cmpsb 337: 338: cmp eax,0 339: jne NO
OMG, какой смысл сравнивать через cmpsb если длину счиатешь через lstrlenA?)))) Юзай тогда уж и lstrcmpA для сравнения
Ок, использую, все работает на ура! А как быть если мне над не сравнить, а найти где нить внутри др.строчке? На Rep cmpsb орет..... Да и то что написал Great, сравнение, а не поиск, или я ошибаюсь? сравнение там с 1го бита...
Ок, че для нее подключить надо? ЗЫ:Great, классный чувак, скоко вопросов не задавал, всегда один из первых отвечает, да и по делу! Респект)))
бр..... Code (Text): pr.obj : error LNK2001: unresolved external symbol _strstrA@8 а что тогда не так? Вот инклуды: Code (Text): includelib \masm32\lib\user32.lib includelib \masm32\lib\kernel32.lib includelib \masm32\lib\shlwapi.lib include \masm32\include\shlwapi.inc include \masm32\include\shell32.inc includelib \masm32\lib\shell32.lib ;-----------------------------------------