;Программа ввода пароля '123', который отображается на экране в виде звездочек. ;Выход из неё осуществляется нажатием клавиши Esc.Условие окончание Enter. ;Программа проверяет пароль и выводит ? на экран,если пасс не верен и !,если верен. ;Ввод осущ-ся с помощью функции 0h, int 16. Вывод на экран - функция eh, int 10. ;Вводимые символы помещаются в стек Коды нажатых клавиш заношу в стек,затем после нажатия Enter сравниваю их поочереди... Только что-то не так в сравнении...не могу понять что?! Вот что у меня получилось. И еще, кто-нибудь подскажет отладчик для *.com файлов(не debug),чтоб посмотреть что там в стеки и регистрах творится..)
Вот вкратце,ввожу 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 ... Заранее спасибо!