![]() |
|
![]() ![]() ![]() |
|
bip |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 15.3.2007 Репутация: нет Всего: нет |
Здравствуйте!
Прошу помочь с реализацией следующей задачки: Хранитель экрана: с клавиатуры вводится строка,затем экран очищается, запрашивается пароль до тех пор, пока он не совпадет с строкой, которую ввели в начале. ![]() |
|||
|
||||
Diabolus |
|
|||
Новичок Профиль Группа: Участник Сообщений: 45 Регистрация: 12.6.2007 Репутация: нет Всего: нет |
А в чём проблема? Отслеживаешь нажатия клавиш, очищаешь экран (просто создаёшь чёрное окно без бордера и делаешь фулл скрин), опять отслеживаешь нажатия клавиш. Если нужно чтоб вводили пароль в окошко - создаёшь его и получаешь оттуда. С чем из этого проблемы?
|
|||
|
||||
ksili |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2069 Регистрация: 3.11.2005 Где: Красноярск Репутация: 1 Всего: 17 |
Только это не хранитель экрана... а хранитель учётной записи
![]() -------------------- Ничто так не развивает аналитическое мышление, как отладка сложной программы без возможности пошагового выполнения (с) |
|||
|
||||
bip |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 15.3.2007 Репутация: нет Всего: нет |
проблема в графическом режиме
![]() Вот, кое что написал.. наброски. Прошу ваших комментарий и советов, по поводу данного кода.
![]() Это сообщение отредактировал(а) bip - 26.11.2008, 00:42 |
|||
|
||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 6 Всего: 14 |
bip, специально для похожих функций (сравнение строк) в ассемблере существует команда CMPS
|
|||
|
||||
bip |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 15.3.2007 Репутация: нет Всего: нет |
Mikl, что-то не проходит такое сравнение. Я ведь задаю и "символы" и пароль с консоли.
и у меня постоянно выводится, что пароль не верен :(
Такое сравнение проходит только, когда строки заранее заданы в сегменте данных... Как поправить, чтобы заработало? Это сообщение отредактировал(а) bip - 26.11.2008, 18:14 |
|||
|
||||
bip |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 15.3.2007 Репутация: нет Всего: нет |
код из учебника:
тоже не пашет:
Почему, кто-нибудь объяснить может? |
||||
|
|||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 6 Всего: 14 |
bip, префикс перед cmps в твоем случае должен быть repe а не repne как ты написал -- это две диаметрально пртивоположные вещи. Во вторых, к сравнению пароля приступай тогда, когда пользователь нажмет клавишу Enter
|
|||
|
||||
bip |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 15.3.2007 Репутация: нет Всего: нет |
Mikl,ты прав. но суть особо не меняется. Просто в одном случае мы ищем одинаковую пару и переходим на метку, если такой нет. В другом случае ищем первую пару различных символов и переходим на метку если строки совпали.Ведь так?
Кстати уже работает с заранее заданными строками, осталось разобраться с проверкой строк которые вводятся с консоли... ![]() |
|||
|
||||
bip |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 15.3.2007 Репутация: нет Всего: нет |
Заработало! Всем спасибо!
![]()
|
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 4 Всего: 158 |
||||
|
||||
Mikl_ |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 537 Регистрация: 9.11.2007 Репутация: 6 Всего: 14 |
![]() ![]() Это сообщение отредактировал(а) Mikl_ - 28.11.2008, 10:39 |
|||
|
||||
bip |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 15.3.2007 Репутация: нет Всего: нет |
Да? Вы уверены? У меня работает, пробовал и на чужом компьютере компилировать-тоже всё работает, следствие под дебагом я не смотрел. ![]() Добавлено через 7 минут и 37 секунд
Ух ты! интересно! Но ведь строка будет занесена в заранее определённую область сегмента данных(Buffer2)только по нажатию клавиши Enter т.е. покак её не нажали ничего не произойдёт соответственно... не с чем сравнивать. |
||||
|
|||||
bip |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 61 Регистрация: 15.3.2007 Репутация: нет Всего: нет |
dumb, вот конечный результат, под дебагом тоже всё как надо:
|
|||
|
||||
dumb |
|
|||
![]() sceloglauxalbifacies ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 2929 Регистрация: 16.6.2006 Репутация: 4 Всего: 158 |
bip, излишняя самоуверенность - плохой помощник в деле изучения чего-либо.
и тем не менее: неправильное формирование буфера для функции ввода строки 0a/21 - результат: ограничитель длины инициализирован мусором, что ведет в частных случаях к пропуску ввода вообще(0), либо к переполнению буфера при вводе. сравнение строк по словам, причем счетчик(cx) установлен на размер буфера в байтах(не говоря уже о том, что первые два байта надо пропускать) - результат: выход за границы буферов. и о самом сравнении:
"всё как надо"... |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Asm: Общие вопросы" | |
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |