ввод строки, и сравнение с имеюшейся, аналог проверки пароля

Тема в разделе "WASM.BEGINNERS", создана пользователем MalisH, 15 ноя 2006.

  1. MalisH

    MalisH New Member

    Публикаций:
    0
    Регистрация:
    15 ноя 2006
    Сообщения:
    7
    mov ah, == а тут я забыл какой ф-ей вводится строка, а справочника нет под рукой
    int 21h
    lea si,string == имеющаяся строка
    cmp si,dx == а сюда по моему сохраняется скэн от введеной строки, сравнение
    je go

    хотел посимвольно проверять но... пришел к выводу что построчно будут проще, но ... кому не трудно ответте p.s. не судите строго
     
  2. CT

    CT New Member

    Публикаций:
    0
    Регистрация:
    17 окт 2006
    Сообщения:
    72
    Уфф... пока понял, что ты имеешь ввиду... )

    Во-первых, что значит "построчно"? Как не крути, а сравнение строк выполяться может либо пословно, либо побайтно либо "подвасловно".

    cmp si,dx - сравнивает АДРЕСА строк, но не сами строки )))

    СТРОКИ сравнить можно так (если их адреса в SI и DX)

    Код (Text):
    1. mov CX,ETALON_STRING_LENGTH ; Вычислишь сам длину эталонной строки
    2.  
    3. mov DI,DX   ; Помести адрес введенной строки в DI
    4.  
    5. cld ; сбросить флаг направления
    6.  
    7. repz cmpsb ; Данная команда сравнивает байты по адресам DS:SI и ES:DI (если память не изменяет),
    8. ; автоматически инкрементирует SI и DI и декрементирует CX. И так  до тех пор, пока результаты равны либо CX не
    9. ; обнулится )
    10.  
    11. test CX,CX ; Если в СХ - ноль, то строки равны до конца
    12.  
    13. jz go