Вопрос № 21094: Доброго времени суток!
Совсем недавно начал изучать ассемблер по архиву рассылки "Ассемблер? Это просто!". Данная рассылка является самым полезным источником информации по ассемблеру из всех, котороые я встречал. ...но рассматривается п...
Вопрос № 21094
Доброго времени суток!
Совсем недавно начал изучать ассемблер по архиву рассылки "Ассемблер? Это просто!". Данная рассылка является самым полезным источником информации по ассемблеру из всех, котороые я встречал. ...но рассматривается почему-то в основном вывод сообщений на экран... а ввод строк пользователем игнорируется... Пытался поискать дополнительную информацию, но пишут в основном "для ввода строки пользователем используйте функцию 0Ah прерывания int 21h"... Не могли бы вы описать эту функцию или посоветовать
хороший источник информации по этой и другим функциям. Прилагаю листинги двух программ (попытки осуществить запрос пользователю по вводу строк). В чем мои ошибки? Адреса для обратной связи
axel@art.vvsu.ru
el_verdugo@mail.ru
Приложение:
Отправлен: 20.05.2005, 06:59
Вопрос задал: el_verdugo (статус: Посетитель)
Всего ответов отправлено: 3
Отвечает: DSota
Здравствуйте, el_verdugo!
Для ввода строки еще имеют значения параметров из строки, адрес который был
введен. То есть формат строки Buf_Name такой:
1-й байт - максимально возвожная длина строки для ввода
2-й байт - при вводе не имеет значения, при возврате в ней содержиться длина
введенной строки
3-й и далее байты - данные самой строки
т.е. структура такая
Buf db Maxlen,StrLen,MaxLen+1 dup (?)
Программы можно исправить так как ниже:
Приложение:
Ответ отправил: DSota (статус: Студент)
Отправлен: 20.05.2005, 09:20 Оценка за ответ: 4
Отвечает: Котиев Зураб
Здравствуйте, el_verdugo!
скачай отсюда Techhelp
http://www.osrc.info/download.php?view.24
или найди в сети превод сего Питера Абеля
Ответ отправил: Котиев Зураб (статус: 4-ый класс)
Отправлен: 20.05.2005, 11:08 Оценка за ответ: 3
Отвечает: Стас
Здравствуйте, el_verdugo!
Для использования Func 0ah 21 прерывания нужно предварительно приготовить буфер:
первый(нулевой) байт - максимальное количество символов которые можно ввести,
во втором байте - функция вернёт количество введенных символов, а вот собственно с третьего байта и начинается буффер (данные).
А может лучше свою процекдуру забабахать? Надо бы там добавить обработку управляющих клавиш: BackSpace, стрелки, Delete...
Если раскоментируешь команды с регистром CX - будет проверка на длину вводимой строки.
См. пример. Чтобы вернуть вариант с Func 0ah 21 прерывания закоментируй все "отодвинутые" строки, раскоментируй остальные. Вообщем разберешься.
Приложение:
Ответ отправил: Стас (статус: Практикант)
Отправлен: 21.05.2005, 00:32 Оценка за ответ: 5