· Начало · Статистика · WASM.RU · Noir.Ru ·

 WASM Phorum (Оффлайн - 24.11.2003) —› WASM.ASSEMBLER —› Поиск строк

Посл.отвђт Сообщенiе


Дата: Июл 28, 2003 20:23:26

Как найти строку в масиве строк, с учетом регистра?


Дата: Июл 28, 2003 21:00:21

Язык?

А вообще, просто от начала массива и до конца тупо перебираешь все варианты. В С это будет функция strcmp.
Если массив отсортирован - лучше пользуйся бинарным поиском - массив бьется напополам и в каждой половине ищется, что надо.


Дата: Июл 28, 2003 21:07:09 · Поправил: Безпощадный даос

Язык?
wasm.ru - значит basic


А вот если вот так :
      mov   edi, pStroka
      mov   ebx, sizeofStroka
      mov   edx, sizeofMasiv
      mov   esi, pMasiv
      add   edx, esi  
      .while esi != edx
        lobsb
        .if al == byte ptr [edi]                                      
            mov  ecx, 1
            .while ecx != ebx
              lodsb
              .if al!=[edi+ecx]              
                 .break                                                       
              .endif
              inc  ecx  
            .endw
            .if ecx == ebx
              xor  ebx, ebx 
              .break
            .endif                                                     
        .endif
      .endw
      mov  eax, esi
      sub  eax, ebx
      ret


Дата: Июл 28, 2003 21:47:20

arturik
7 стока кода видимо имелось в виду lodsb?


Дата: Июл 28, 2003 21:57:01

Конечно, и на выходе тоже есть кое-что... Так это же примерно и предполагается изменять.


Дата: Июл 28, 2003 22:13:29

Parasite
Как вы себе представляете массив строк? Если это просто строки идущие одна за другой через разделитель (00h, например), то задача сводится к классическому поиску подстроки в строке (эта тема недавно поднималась в форуме). С другой стороны, это может быть массив указателей на строки...

arturik
Допустим, имеем следующий массив:
myMassiv db "строка1",0,"строка2",0,"строка3",0,0
pMassiv dd OFFSET myMassiv
Если искомая строка Stroka = "ка2", например, алгоритм выдаст, что строка найдена, но это не совсем корректно (зависит от конечной задачи).


Дата: Июл 28, 2003 22:33:57

Условие задачи нечетко сформулировано. Поэтому и ответ может быть не точный.


Дата: Июл 29, 2003 15:53:37

Quantum
Не, масив строк - (как я его себе представляю) - структура, где каждая строка оканчивается 0.


Дата: Июл 30, 2003 15:49:20

Parasite
Какая разница, массив строк или нет?
Если массив строк в текстовом файле, то разделитель 0a, 0d
Алгоритм будет тот же...


Дата: Июл 30, 2003 19:47:34

STRINGTABLE в ресурсах PE32 тоже использует этот принцип, только в юникоде.


Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.069