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

Тема в разделе "WASM.ASSEMBLER", создана пользователем Bonez92, 23 июн 2009.

  1. Bonez92

    Bonez92 Евгений

    Публикаций:
    0
    Регистрация:
    15 окт 2008
    Сообщения:
    16
    Адрес:
    Уфа
    Привет всем!
    На Visual Basic есть такая функция - "Like". А как её реализовать на асме?
     
  2. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    У меня странное чувство дежавю, как будто я уже читал вот буквально на днях про бейсиковское Like и другой язык программирования.

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

    Bonez92 Евгений

    Публикаций:
    0
    Регистрация:
    15 окт 2008
    Сообщения:
    16
    Адрес:
    Уфа
    Проверяет две строки по маске. Например:
    "*.exe" Like "example.exe"; return true
    "*.exe" Like "example.doc"; retrun false
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    http://www.codenet.ru/progr/alg/24.php
     
  5. punxer

    punxer Андрей

    Публикаций:
    0
    Регистрация:
    16 окт 2006
    Сообщения:
    1.327
    Адрес:
    Ржев
    Поиск подстроки в строке. Если найдено ретурн тру иначе фолс.
     
  6. Bonez92

    Bonez92 Евгений

    Публикаций:
    0
    Регистрация:
    15 окт 2008
    Сообщения:
    16
    Адрес:
    Уфа
    А как реализовать на асме?
     
  7. MSoft

    MSoft New Member

    Публикаций:
    0
    Регистрация:
    16 дек 2006
    Сообщения:
    2.854
    Мой коментарий потерли, но я все-равно повторю.
    На вопрос "как" тебе ответили - алгоритм тебе дали, реализовывай на каком хочешь языке. Ты видимо плохо знаешь русский язык и потому случайно по ошибке написал "как" вместо "сделайте все за меня и дайте готовый код, а то мне впадлу что-то самому делать".
     
  8. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Ну очевидно, а) правильно и б) руками
    MSoft
    +1
     
  9. Microedition

    Microedition Active Member

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

    cppasm New Member

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

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    cppasm
    логическое отрицание слабо сделать?
    автор ничего не говорил про такие маски.
     
  12. wasm_test

    wasm_test wasm test user

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Microedition
    ололо!! strstr("blabla", "*.exe") с отрицанием вернет 1. а надо 0 )
     
  13. Microedition

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Great
    можно убрать звездочку.
    Код (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

    Публикаций:
    0
    Регистрация:
    24 ноя 2006
    Сообщения:
    5.582
    Microedition
    Ну, блин.

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

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

    Microedition Active Member

    Публикаций:
    0
    Регистрация:
    5 июн 2008
    Сообщения:
    814
    Great
    О_щ это же целый engine надо написать, чтоб по маске искать в строке.
     
  16. _basmp_

    _basmp_ New Member

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

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

    AsmGuru62 Member

    Публикаций:
    0
    Регистрация:
    12 сен 2002
    Сообщения:
    689
    Адрес:
    Toronto
  18. rdtsc

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

    Публикаций:
    0
    Регистрация:
    10 мар 2009
    Сообщения:
    180
    Адрес:
    Москва
    Если для однозвездочковых , то эскиз такой (оч упрощенно)

    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!