Хостинг портала RFpro.ru: Московский хостер Профессиональный ХОСТИНГ на базе Linux x64 и Windows x64 РАССЫЛКИ ПОРТАЛА RFPRO.RU Лучшие эксперты данной рассылки Номер выпуска: | 1400 | Дата выхода: | 15.12.2010, 22:00 | Администратор рассылки: | Лысков Игорь Витальевич (Старший модератор) | Подписчиков / экспертов: | 225 / 67 | Вопросов / ответов: | 1 / 1 | Вопрос № 181210: Здравствуйте, уважаемые эксперты! Прошу Вас скоректировать код программы! программа должна работать так: если нажимаешь F1 записывает в файл введеный пароль! а если нажимаешь F2 то прочитывает из файла пароль и сравнивает с введеным, и пока... Вопрос № 181210: Здравствуйте, уважаемые эксперты! Прошу Вас скоректировать код программы!
программа должна работать так: если нажимаешь F1 записывает в файл введеный пароль! а если нажимаешь F2 то прочитывает из файла пароль и сравнивает с введеным, и показывает, правильный или нет!
заранее огромное спасибо! Отправлен: 10.12.2010, 22:10 Вопрос задал: Андреев Дмитрий Фёдорович (Посетитель) Всего ответов: 1 Страница вопроса » Отвечает Лысков Игорь Витальевич (Старший модератор) : Здравствуйте, Андреев Дмитрий Фёдорович! Полагаю, Вы хотели нечто такое... Удачи!
Код: ;если нажимаешь F1 записывает в файл введеный пароль! ;а если нажимаешь F2 то прочитывает из файла пароль ;и сравнивает с введеным, и показывает, правильный или нет!
Stacksg segment dw 32 dup(?) Stacksg ends
Datasg segment password db 10 dup (?) string db 10 dup (?) stra db 'vvedite parol: ', '$'
filename db 'myfile.001',0 Written db 0dh,0ah,'Password written$' FleNotFound db 0dh,0ah,'File not found$' pass_ok db 0dh,0ah,'Password ok$' pass_bad db 0dh,0ah,'Password bad$ ' press db 0dh,0ah,'Press any key$' datasg ends codesg segment assume cs:codesg, ds:datasg, ss:stacksg start: mov ax, datasg mov ds, ax mov es, ax mov dx, offset stra mov ah, 9h int 21h
xor bx, bx ;индекс в вводимой строке пароля pass: mov ah, 08h int 21h ;ждем символ cmp al, 0 je control_key ;управляющий код идет следом
cmp al, 1bh je exit ;по ESC сразу выход
cmp bx, 10 ;максимум 10 символов je pass ;реагируем только на f1, f2, esc mov string[bx], al ;сохраняем в строке inc bx ;ндекс слеующего
mov dl, '*' mov ah, 2 int 21h ;выведем на экране *
jmp pass ;на повтор ввода
control_key: mov ah, 8h ;принимаем второй код int 21h
cmp al, 3ch ;f2 je read_file ;на чтение файла cmp al, 3bh ;f1 jne pass ;все остальные игнорируем ;запись файла с паролем push bx ;сохран им длину пароля mov ah, 3ch ;создаем файл xor cx, cx ;атрибут mov dx, offset filename int 21h mov bx, ax ;handle
mov ah,40h ;пишем pop cx ;длина пароля lea dx,string ;адрес int 21h
mov ah, 3eh ;закрываем int 21h
lea dx, Written mov ah, 9 int 21h ;сообщение на экран jmp exit ;на выход
read_file: ;читаем файл с паролем mov ax, 3d00h ;открываем на чтение mov dx, offset filename int 21h jc file_not_found ;не нашли! push bx ;сохраним длину введенной строки mov bx, ax ;handle lea dx, password ;адрес mov cx, 10 ;макс длина mov ah, 3fh ;ф-я чтения int 21h mov cx, ax ;реальная длина
mov ah,3eh ;закрываем файл int 21h pop bx ;дина введенной строки
cmp bx, cx ;сравним jne pass_error ;разные длины! mov si,offset string mov di,offset password cld repe cmpsb ;сравним сами строки jne pass_error ;разны е! ;сообщения good: ;одинаковые пароли lea dx, pass_ok jmp print_mess file_not_found: ;файл не найден lea dx, FleNotFound jmp print_mess pass_error: ;разные пароли lea dx, pass_bad print_mess: mov ah, 9 int 21h
exit: lea dx, press ;press any key mov ah, 9 int 21h
mov ah, 08h ;ждем "any key" int 21h
mov ax, 4c00h int 21h ;bye
codesg ends end start
----- Люби своего ближнего, как самого себя Ответ отправил: Лысков Игорь Витальевич (Старший модератор) Ответ отправлен: 11.12.2010, 01:53 Номер ответа: 264653 Украина, Кировоград Тел.: +380957525051 ICQ # 234137952 Mail.ru-агент: igorlyskov@mail.ru
Оценка ответа: 5 Комментарий к оценке: большое спасибо за помощь! всё работает! Вам помог ответ? Пожалуйста, поблагодарите эксперта за это! Как сказать этому эксперту "спасибо"? | Отправить SMS #thank 264653 на номер 1151 (Россия) | Еще номера » | Оценить выпуск » Нам очень важно Ваше мнение об этом выпуске рассылки! Скажите "спасибо" эксперту, который помог Вам! Отправьте СМС-сообщение с тестом #thank НОМЕР_ОТВЕТА на короткий номер 1151 (Россия) Номер ответа и конкретный текст СМС указан внизу каждого ответа. Полный список номеров » * Стоимость одного СМС-сообщения от 7.15 руб. и зависит от оператора сотовой связи. (полный список тарифов) ** При ошибочном вводе номера ответа или текста #thank услуга считается оказанной, денежные средства не возвращаются. *** Сумма выплаты эксперту-автору ответа расчитывается из суммы перечислений на портал от биллинговой компании. |
Комментариев нет:
Отправить комментарий