|
0 / 0 / 0
Регистрация: 29.09.2019
Сообщений: 9
|
|
Вывести введённый символ в текущей позиции курсора и вывести в позицию выше, ниже, левее или правее.19.09.2020, 00:54. Показов 3291. Ответов 11
Метки нет (Все метки)
Добрый день, форум.
Выполнив все заданные мне работы по asm, столкнулся с последний. Тема работы - "Обработка прерываний." Задание: Выводить в текущее положение курсора символ, введённый с клавиатуры. Этот же символ выводить в позицию выше, ниже, левее или правее текущего символа, в зависимости от нажатия клавиш “8”, “2”, “4”, “6” на цифровой клавиатуре. С клавиатуры можно ввести любую латинскую букву, при этом, выводимый символ изменяется на введённый символ. Вывод осуществлять непрерывно с некоторой задержкой. Задержка между выводом каждого символа определяется нажатием цифровой клавиши, следующим способом: введённую цифру умножить на 29, это и будет число повторений цикла задержки. Для анализа нажатия клавиши использовать вектор 1Ch. Разбирающиеся люди, пожалуйста подскажите, как написать код в таком формате (имеется ввиду работа с видео), до это разрабатывал только консольные приложения. Спасибо!
0
|
|
| 19.09.2020, 00:54 | |
|
Ответы с готовыми решениями:
11
Ввести символ и вывести его в текущую позицию курсора с атрибутами Вывести приглашение к вводу символа, ввести символ, вывести введенный символ в центре очищенного экрана как фон переместить правее или шапку левее |
|
1624 / 806 / 146
Регистрация: 13.06.2015
Сообщений: 3,266
|
|
| 19.09.2020, 01:20 | |
|
Это какой-то наркотический бред полоумного шизофреника.
0
|
|
|
0 / 0 / 0
Регистрация: 29.09.2019
Сообщений: 9
|
|
| 19.09.2020, 01:28 [ТС] | |
|
Полностью согласен, особенно это ощущается на контрасте. Прошлое задание - разбить строку на 2 части.
Я накидал (скопипастил) код, который просто выводит символ, немного подправил, чтобы она выводил именно нужный символ. Но на этом мои продвижения в этом задании закончились. Да и вывод нужного символа реализован криво, думаю можно сделать лучше.
0
|
|
|
Модератор
|
||
| 19.09.2020, 13:59 | ||
|
Vladisalvvv, разбивайте задание на подзадачи и выполняйте последовательно.
При помощи int 16h ah=00h можно экспериментально узнать коды этих клавиш и записать на бумажке. Ввод символа с клавиатуры без "эха" - int 16h ah=00h. Вывод символа в текущей позиции без изменения положения курсора - int 10h ah=0Ah Получить координаты курсора - int 10h ah=03h Изменить позицию курсора - int 10h ah=02h Получить номер текущей видеостраницы - int 10h ah=0Fh Детали в справочниках http://www.codenet.ru/progr/dos/ http://www.techhelpmanual.com/2-main_menu.html http://www.ctyme.com/intr/int.htm Всё остальное - я не очень понимаю - сделайте пока эту часть и по детализации подойдите к преподавателю. Согласитесь, что подходить с "ничё не понел" или с "разобрался с первой частью, но по выводу с задержкой недопонимаю" - это по разному воспринимается преподавателем. Вероятно, вторая часть подразумевает перехват прерывания таймера для отсчёта времени задержки. Время задержки будет меняться в ходе программы в зависимости от нажатия клавиш "0..."9" основной клавиатуры. Потом вы нажимаете и не отпускаете клавишу с латинской буквой - и в зависимости от задержки - должен меняться темп вывода символов на экран. Может имеется в виду настройка int 16h ax=0305h
0
|
||
|
0 / 0 / 0
Регистрация: 29.09.2019
Сообщений: 9
|
|
| 19.09.2020, 18:55 [ТС] | |
|
Получилось реализовать половину программу, как раз до момента с таймером.
Возник вопрос, как реализовать задержку (допустим 5 секунд) с помощью вектора 1ch?
0
|
|
|
Модератор
|
||||||||||||||||
| 19.09.2020, 19:17 | ||||||||||||||||
|
Перехватываете прерывание 1Ch.
В прерывании выполняете всего одно действие декремент переменной - только настройте сегмент данных перед обращением. А в основной программе:
Что-то я напутал с вычислением константы для таймера. Прерывание 1Ch вызывается 18,2 раза в секунду. Значит за 5 секунд будет вызвано 18,2*5=91 раз
Или в обработчике прерывания
0
|
||||||||||||||||
|
0 / 0 / 0
Регистрация: 29.09.2019
Сообщений: 9
|
||||||
| 19.09.2020, 21:28 [ТС] | ||||||
|
Не подскажете могу ли я воспользоваться вашим кодом для этой программы и как его правильно вставить в нее.
Хочу вынести задержку в отдельную процедуру - delay.
0
|
||||||
|
Модератор
|
|
| 19.09.2020, 21:58 | |
|
Что это за код? Он не подходит под условие из первого сообщения - какая-то "мышь"...
0
|
|
|
0 / 0 / 0
Регистрация: 29.09.2019
Сообщений: 9
|
|
| 19.09.2020, 22:45 [ТС] | |
|
А в каком смысле? Вроде выполняет все до таймера.
То есть печатает символ, дальше обрабатывает след клавишу(делает проверка на 8,2,6,4), если введены они печатает символ выше, ниже.. Или я что-то не так понимаю?
0
|
|
|
Модератор
|
|
| 19.09.2020, 22:53 | |
|
В коде обработчик мыши, о котором в условии ни слова.
Поэтому вопрос - что это за код? Если код для другой задачи, то и ответ по задержке будет другим - есть вариант через обращение к функции задержки.
1
|
|
|
0 / 0 / 0
Регистрация: 29.09.2019
Сообщений: 9
|
|
| 19.09.2020, 23:20 [ТС] | |
|
Похоже вы правы.
![]() Когда начал заниматься этим заданием не понял фразу "в текущее положение курсора символ", потом погугли похожие задачи, наткнулся на реализацию с обработчиком мыши, похоже это меня и запутало.. Сейчас отпишу преподавателю, может быть его устроит такая реализация. А не подскажете, где я могу почитать информацию про задержку для этого кода, все ровно доделаю его для себя.
0
|
|
|
Модератор
|
|||||||||||
| 20.09.2020, 00:11 | |||||||||||
|
Динамический вывод системного времени
только там DOS com программа и всё в одном сегменте - для DOS exe будет чуть сложнее при обращении к данным
Возможно, пояснения по работе с прерыванием 1Ch (или, что почти то же самое с 08h) есть в книге Зубков. Ассемблер для DOS, Windows, Linux. А так сразу и не вспомню - это относится исключительно к программированию в DOS и к ассемблеру имеет отношение только из-за удобства ассемблера при перехвате прерываний.
1
|
|||||||||||
| 20.09.2020, 00:11 | |
|
Помогаю со студенческими работами здесь
12
Вывести символ, введенный в инпут Как вывести на консоль введённый символ?
Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога
Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
|
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование
. \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json>
Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом.
# Check if. . .
|
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так:
https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347
Основана на STM32F303RBT6.
На борту пять. . .
|
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
|
|
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу,
и светлой Луне.
В мире
покоя нет
и люди
не могут жить в тишине.
А жить им немного лет.
|
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила»
«Время-Деньги»
«Деньги -Пуля»
|
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога
Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
|
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога
Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
|