Like на ассемблере

Discussion in 'WASM.ASSEMBLER' started by Bonez92, Jun 23, 2009.

  1. Bonez92

    Bonez92 Евгений

    Blog Posts:
    0
    Привет всем!
    На Visual Basic есть такая функция - "Like". А как её реализовать на асме?
     
  2. MSoft

    MSoft New Member

    Blog Posts:
    0
    У меня странное чувство дежавю, как будто я уже читал вот буквально на днях про бейсиковское Like и другой язык программирования.

    А что делает эта функция, если не секрет?
     
  3. Bonez92

    Bonez92 Евгений

    Blog Posts:
    0
    Проверяет две строки по маске. Например:
    "*.exe" Like "example.exe"; return true
    "*.exe" Like "example.doc"; retrun false
     
  4. n0name

    n0name New Member

    Blog Posts:
    0
    http://www.codenet.ru/progr/alg/24.php
     
  5. punxer

    punxer Андрей

    Blog Posts:
    0
    Поиск подстроки в строке. Если найдено ретурн тру иначе фолс.
     
  6. Bonez92

    Bonez92 Евгений

    Blog Posts:
    0
    А как реализовать на асме?
     
  7. MSoft

    MSoft New Member

    Blog Posts:
    0
    Мой коментарий потерли, но я все-равно повторю.
    На вопрос "как" тебе ответили - алгоритм тебе дали, реализовывай на каком хочешь языке. Ты видимо плохо знаешь русский язык и потому случайно по ошибке написал "как" вместо "сделайте все за меня и дайте готовый код, а то мне впадлу что-то самому делать".
     
  8. wasm_test

    wasm_test wasm test user

    Blog Posts:
    0
    Ну очевидно, а) правильно и б) руками
    MSoft
    +1
     
  9. Microedition

    Microedition Active Member

    Blog Posts:
    0
    можно расковырять си-функцию strstr(char *str, char *substr),
    которая ищет подстроку в строке.
    в педиивики на странице "Список алгоритмов" кроме всего прочего есть описание
    сабжевого алгоритма.
     
  10. cppasm

    cppasm New Member

    Blog Posts:
    0
    Поиск подстроки при такой постановке задачи не является решением.
    strstr("example.exe","*.exe") вернёт ноль, а судя по описанию автора должна быть единица.
    К тому же маски вида "ex?mp*.exe" при помощи strstr() не очень то удобно искать.
    В общем автор и тут и на cracklab пишет про свой like - а что это такое нигде не описывает.
    Вроди все кругом Visual Basic знают.
    Какая задача вообще?
     
  11. Microedition

    Microedition Active Member

    Blog Posts:
    0
    cppasm
    логическое отрицание слабо сделать?
    автор ничего не говорил про такие маски.
     
  12. wasm_test

    wasm_test wasm test user

    Blog Posts:
    0
    Microedition
    ололо!! strstr("blabla", "*.exe") с отрицанием вернет 1. а надо 0 )
     
  13. Microedition

    Microedition Active Member

    Blog Posts:
    0
    Great
    можно убрать звездочку.
    Code (Text):
    1. if (strstr("blabla.exe", ".exe"))
    2.     printf("ok\n");
    3. else
    4.     printf("ололо!!\n");
    выведет "ok\n"
     
  14. wasm_test

    wasm_test wasm test user

    Blog Posts:
    0
    Microedition
    Ну, блин.

    strstr ("blabla.exe", "aa*.exe")

    тут тоже уберешь звездочку? или все-таки, наконец, прекратишь стебаться)
    очевидно же, что * это маска
     
  15. Microedition

    Microedition Active Member

    Blog Posts:
    0
    Great
    О_щ это же целый engine надо написать, чтоб по маске искать в строке.
     
  16. _basmp_

    _basmp_ New Member

    Blog Posts:
    0
    Microedition
    если только звездочка и вопросик, то ничего сложного. берем первую часть маски от начала и до конца | звездочки | вопросика (что раньше) и стрстр ее. потом, если вопросик, то один пропускаем и проверяем следующую часть, если есть, на совпадение, если совпадает - дальше, нет - сначала маски, но со сдвигом начала в строке поиска. звездочка - выделяем очередную определенную часть маски и снова стрстр. итд

    с регехами все сложнее. даж небольшие компиляторы пишут. чаще жит, но иногда и сталоне.
     
  17. AsmGuru62

    AsmGuru62 Member

    Blog Posts:
    0
  18. rdtsc

    rdtsc Параллелепипедов Артем

    Blog Posts:
    0
    Если для однозвездочковых , то эскиз такой (оч упрощенно)

    mov edi,buf1 ; "stolovaya"
    mov esi,tag ; "st*a"
    cld
    mov edx,LEN_OF_TAG
    l1:
    lodsb
    or al,al
    jz jex1
    cmp al,'*'
    jz jzv
    scasb
    jnz jfex
    loop l1
    ......
    jzv:
    sub edx,ecx ; left in tag
    xchg edx,ecx
    l2:
    p edi
    p esi
    call lstrcmp
    jz jok
    inc edi
    loop l2
    jfex:
    printf FUCK! not found
    jok:
    PRINTF OKEY,O-BEE!