Проблема со стеком

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

  1. lexer

    lexer New Member

    Публикаций:
    0
    Регистрация:
    9 июл 2006
    Сообщения:
    25
    ;Программа ввода пароля '123', который отображается на экране в виде звездочек.
    ;Выход из неё осуществляется нажатием клавиши Esc.Условие окончание Enter.
    ;Программа проверяет пароль и выводит ? на экран,если пасс не верен и !,если верен.
    ;Ввод осущ-ся с помощью функции 0h, int 16. Вывод на экран - функция eh, int 10.
    ;Вводимые символы помещаются в стек

    Коды нажатых клавиш заношу в стек,затем после нажатия Enter сравниваю их поочереди...

    Только что-то не так в сравнении...не могу понять что?!

    Вот что у меня получилось.

    И еще, кто-нибудь подскажет отладчик для *.com файлов(не debug),чтоб посмотреть что там в стеки и регистрах творится..)
     
  2. lexer

    lexer New Member

    Публикаций:
    0
    Регистрация:
    9 июл 2006
    Сообщения:
    25
    Вот вкратце,ввожу 123,но при сравнении ax,bx в них получаются разные значения,хотя должны быть коды клавиш 1 2 3,что не так?

    mov cx,03h ;счетчик

    LpKeysInOut: ;начало цикла

    mov ah,0h ;функция 0h для int 16h
    int 16h

    cmp al,30h ;ввод только цифр
    jl LpKeysInOut
    cmp al,39h
    jg LpKeysInOut

    push ax ;цифру в стек

    mov ah,0eh ;функция 0eh int 10(вывод на экран)
    mov al,2ah ;вывод * на экран
    int 10h

    loop LpKeysInOut

    ...

    LPressEnter: ;Метка: если Enter
    ...
    pop ax ;извлекаем числа из стека в регистры
    mov bx,33h ;(3) ;сравниваем числа из переменных с регистрами
    cmp ax,bx
    jnz LWrong

    pop ax
    mov bx,32h ;(2)
    cmp ax,bx
    jnz LWrong

    pop ax
    mov bx,31h ;(1)
    cmp ax,bx
    jnz LWrong

    jmp LAccept
    ...

    Заранее спасибо!
     
  3. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    попробуй так:
    Код (Text):
    1. and ax, 0ffh
    2. push    ax            ;цифру в стек
     
  4. TermoSINteZ

    TermoSINteZ Синоби даоса Команда форума

    Публикаций:
    2
    Регистрация:
    11 июн 2004
    Сообщения:
    3.551
    Адрес:
    Russia
    отладчик могу insight посоветовать ..
     
  5. lexer

    lexer New Member

    Публикаций:
    0
    Регистрация:
    9 июл 2006
    Сообщения:
    25
    Заработало,спасибо!

    только в чем её смысл?
     
  6. rmn

    rmn Well-Known Member

    Публикаций:
    0
    Регистрация:
    23 ноя 2004
    Сообщения:
    2.348
    В AH тоже что-то есть после вызова прерывания (scan-код, по-моему, хотя хз. давно под дос не писал :))