|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
27.03.2008, 19:07 | #1 |
Пользователь
Регистрация: 30.01.2007
Сообщений: 49
|
Считать строку
Всем здрасте, ассемблер изучаю недавно. Необходимо считать с клавиатуры строку, а потом вывести ее на экран.
Пишу следующее: Код:
Заранее всем спасибо |
27.03.2008, 22:09 | #2 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Читаем внимательно описание int 21,0A
До вызова должен быть подготовлен буфер max ?????? после вызова буфер содержит строку. Формат буфера max, len, text, 0Dh объяви строку хотя-бы так stroka db 10,'$','$','$','$','$','$','$','$', '$','$','$','$' Читаем дальше. Int 21,09 требует смещения на начало строки, заканчивающейся символом '$'. Символ окончания уже есть, т.к. мы сами объявили буфер. При указании смещения нужно пропустить 2 байта. |
28.03.2008, 06:10 | #3 |
Пользователь
Регистрация: 30.01.2007
Сообщений: 49
|
Попробовал объявить строку как ты предложил - все отлично. Ток перед строкой выдает ромбик. А вот если мне нужно будет ввести строку больше чем 10 байт например 100, я так понял это надо писать так
Код:
А вообще как-нить можно объявить сроку ну типо как в паскале чтоб длина была 255 Как это сделать, чет я не догоняю. |
28.03.2008, 08:42 | #4 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Первый байт - max количество вводимых символов.
После вызова функции второй байт - количество введенных символов. С третьего символа - сама строка Первые два байта пропускаем: Код:
|
28.03.2008, 16:28 | #5 |
Пользователь
Регистрация: 30.01.2007
Сообщений: 49
|
сделал я так, токо теперь он у меня ваще ничего не выводит
|
28.03.2008, 16:39 | #6 |
Участник клуба
Регистрация: 12.10.2007
Сообщений: 1,204
|
Это кажется. После того как нажимаем <enter> курсор не перемещается на следующую строку и вывод идет по введенному тексту.
объяви еще одну строку stroka1 db 'gfhjksghjfdhgjfkdlshgjfldhgjkfdhgj l','$' и измени mov ah, 09h mov dx, offset stroka1 ;add dx, 2 int 21h увидишь. Вывод - после ввода нужно перемещать курсор. Перед выводом введенной строки сначала выведи db 0Dh, 0Ah, '$' Последний раз редактировалось alexBlack; 28.03.2008 в 16:44. |
01.04.2008, 17:52 | #7 |
Пользователь
Регистрация: 30.01.2007
Сообщений: 49
|
Спасиб, понял. Буду пробовать
|
05.04.2008, 18:16 | #8 |
Пользователь
Регистрация: 18.11.2007
Сообщений: 13
|
вот программа написана на masm32
Код:
Последний раз редактировалось rpy3uH; 06.04.2008 в 15:40. |
10.04.2008, 16:37 | #9 |
Пользователь
Регистрация: 30.01.2007
Сообщений: 49
|
за masm32 спс, но мне пока до него далеко. хочу понять простое
|
10.04.2008, 16:52 | #10 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
Цитата:
I'm learning to live...
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Как считать строки? | Черничный | Общие вопросы Delphi | 14 | 01.09.2008 14:56 |
Как из .BMP считать попиксельно | OrdJONY | Мультимедиа в Delphi | 7 | 17.08.2008 15:46 |
Считать определенную строку из файла | DimkinStd | Работа с сетью в Delphi | 4 | 15.02.2007 22:30 |
Как считать данные из Edit? | Svop | Компоненты Delphi | 11 | 20.11.2006 16:45 |
как считать данные с Txt файла? | Alar | Общие вопросы Delphi | 0 | 29.10.2006 20:12 |