0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 36
|
||||||
1 | ||||||
Ввод строки (Dosbox)10.04.2012, 14:14. Показов 8593. Ответов 9
Метки нет Все метки)
(
Здравствуйте! Моя задача: написать прогу, считывающую число в слово и по-разному выводящее его. У меня Win x64, ассемблер - MASM 5.1. Проблема со вводом строки: использую функцию 0Ah 21-ого прерывания, запускаю в Dosbox, но программа не ждёт, пока я что-то введу, а сразу идёт дальше. Можно ли это как-то побороть?
0
|
10.04.2012, 14:14 | |
Ответы с готовыми решениями:
9
Ввод с клавиатуры строки символов, вывод строки в обратном порядке на принтер На ввод две строки. Определить можно ли из букв первой строки составить вторую Написать программу разрешающую ввод строки не более 80 символов и вывод на экран этой строки красным цветом |
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
|
|
10.04.2012, 18:17 | 2 |
Посмотрел в отладчике. Первый байт в буфере содержит максимальное число символов. После выполнения прерывания, во второй байт буфера записывается число введенных символов минус ентер. Ентер записывается тоже.
Получается, что если нужно ввести 5 символов, то буфер должен быть размером 7 байт.
0
|
2 / 2 / 0
Регистрация: 12.02.2011
Сообщений: 55
|
|
10.04.2012, 18:23 | 3 |
поместите в первый байт колличество вводимых символов
допустим 40 mov BUF,40 Добавлено через 1 минуту и еще могут возникнут не понятики с выводом на экран. т. к. 9я функция 21го прерывания выводит все что встретит до символа '$'
0
|
![]() 766 / 310 / 11
Регистрация: 27.05.2011
Сообщений: 703
|
||||||
10.04.2012, 18:31 | 4 | |||||
![]() Решение
0
|
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
|
||||||
10.04.2012, 19:30 | 5 | |||||
Кстати, выводимая на экран строка затрет введенную с клавиатуры. Покажется, что вывода вообще не было. Что бы этого избежать, надо перед выводом строки, вывести на экран символы перевод строки, возврат каретки (10,13 (0Ah,0Dh))
0
|
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 36
|
|
10.04.2012, 20:39 [ТС] | 6 |
zzzyyyxxx, огромное спасибо, всё заработало, только не понятно два момента:
1) зачем при объявлении строки в DUP указывать символ на 1 больше, чем максимальный? 2) что значит строка mov byte ptr ds:[BUF+1],0ah? Как я понял, эти два пункта связаны. В самом конце строки у нас записан код Enter'а, а вслед за ним мы дописываем код 10, чтобы сделать переход на новую строку. Но тогда мне не понятно, по какому принципу он выводит строку, если будет записано меньше максимума символов?
0
|
![]() 766 / 310 / 11
Регистрация: 27.05.2011
Сообщений: 703
|
|
10.04.2012, 20:49 | 7 |
в последнем будет хранится '$', т.е. вывод будет осуществлён до этого символа.. если меньше, то будет велика вероятность вывода мусора..
первые два байта твоей строки будут отведены, для тех характер вводимого массива: 1) кол-во байт для ввода, не более.. 2) фактич кол-во, т.е. сколько ввёл.. 3) и далее, твой массив.. т.к. эти характеристики нам более не нужны, пишем inc di, т.е. переводим указатель на 2(1)-ой байт, его же в свою очередь затираем символом перехода на новую строку и выводим.. надеюсь понятно изложил?
0
|
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 36
|
|
10.04.2012, 21:03 [ТС] | 8 |
zzzyyyxxx, очень понятно. Только, если понял устройство строки для данной функции ввода, то первым символом у нас стоит 10, потом идёт строка, а потом идёт 13. Всегда ли тогда будет правильный переход на новую строку?
0
|
![]() 766 / 310 / 11
Регистрация: 27.05.2011
Сообщений: 703
|
|
10.04.2012, 21:13 | 9 |
ну ты сам формируешь, если надо, то перед сторокой можешь переход на новую сделать, если не надо, dx ещё раз увеличиваешь на 1 и всё пучком, короче зависит от ситуации...
0
|
0 / 0 / 0
Регистрация: 11.02.2011
Сообщений: 36
|
|
10.04.2012, 21:17 [ТС] | 10 |
zzzyyyxxx, теперь всё ясно, спасибо.
0
|
10.04.2012, 21:17 | ||||||
Помогаю со студенческими работами здесь
10
Ввести с клавиатуры строку символов.Признак окончания ввода строки - нажатие клавиши 'ввод'.Программа должна определить длину введенной строки L If и For в DOSBox Будет ли работать по сети DOSBox? DosBox Command.com и DosBox Искать еще темы с ответами Или воспользуйтесь поиском по форуму:
|
|
![]() |
Новые блоги и статьи
![]() |
||||
Вопросы на собеседовании по Android
mobDevWorks 14.03.2025
По данным статистики, Android занимает более 70% мирового рынка мобильных операционных систем, что делает платформу привлекательной как для начинающих разработчиков, так и для опытных профессионалов. . . .
|
Лучшие игровые движки для Python
py-thonny 14.03.2025
Python обеспечивает разработчиков игр мощными движками и фреймворками, которые позволяют воплотить практически любую идею — от простой аркады до визуального романа с разветвленным сюжетом. Главное. . .
|
Бессерверный JavaScript: Разработка масштабируемых API с AWS Lambda
run.dev 14.03.2025
Но что такое бессерверные вычисления на самом деле? По сути, это модель облачных вычислений, где разработчик фокусируется исключительно на создании бизнес-логики, не тратя время на настройку. . .
|
Безопасность кода в C++26: Менеджеры ресурсов и висячие ссылки
NullReferenced 14.03.2025
C++ всегда был языком, предоставляющим разработчикам большие возможности и гибкость, но вместе с тем требующим ответственности. Одной из самых коварных проблем даже для опытных программистов остаются. . .
|
smart-agent proper interface settings (2025)
jigi33 14.03.2025
Smart-agent proper interface settings (mart 2025).
(see screenshots to look at "Etalon" ARM)
|
Продвинутые настройки JVM
Javaican 14.03.2025
Стандартные параметры запуска JVM хороши для повседневной разработки, но совершенно недостаточны для высоконагруженных систем. Представьте, что вы запускаете финансовую платформу, обрабатывающую. . .
|
CI/CD для приложений Java с Azure DevOps и Docker
Mr. Docker 14.03.2025
Разработка современных Java-приложений немыслима без системы непрерывной интеграции и доставки (CI/ CD). Azure DevOps в сочетании с Docker предоставляет мощный инструментарий для создания таких. . .
|
Разработка на PHP и интернет вещей (IoT)
Jason-Webb 14.03.2025
Интернет вещей (IoT) произвел настоящую революцию в способах взаимодействия устройств с окружающим миром. В эпоху, когда холодильники сами заказывают молоко, а термостаты учатся вашим привычкам,. . .
|
Node.js 20: Новые возможности и улучшения производительности
Reangularity 14.03.2025
Что же принёс нам релиз Node. js 20? В первую очередь, это существенные улучшения в производительности. Движок V8 получил серьёзные оптимизации, благодаря чему JavaScript-код выполняется заметно. . .
|
Безопасность кластеров Apache Kafka
Javaican 14.03.2025
Apache Kafka стал одним из ключевых компонентов современных архитектур, обрабатывающих потоки данных в режиме реального времени. Его используют тысячи компаний от стартапов до технологических. . .
|