Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 02.07.2011, 23:12   #1
Ang15
Пользователь
 
Регистрация: 02.07.2011
Сообщений: 38
По умолчанию Низкоуровневый ввод с клавиатуры

Недавно начал изучать ассемблер для x86 процессоров. Сейчас пытаюсь реализовать функцию ввода через клавиатуру посредством прямого обращения к регистрам и буферам контроллера клавиатуры, а не через прерывания или API. Как первый этап нашёл упрощённый эмулятор ПК Жмакина. Когда подготавливаю регистры контроллера (т.е. флаги задаю), то всё нормально. Но процессор просто бежит дальше. Подскажите, как заставить программу остановиться и заставить подождать, пока я введу строку. Т.е. не конкретно код, а дать направление, куда дальше копать, т.е посредством чего реализовывается (таймер, аппаратные прерывания...), т.к. я даже чёткий запрос в Google оформить не могу. Заранее спасибо.
Ang15 вне форума Ответить с цитированием
Старый 02.07.2011, 23:26   #2
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

лично я подобное делал так:
1)заводил переменную для хранения символа введеного
2)ставил обработчик на IRQ линию от клавы, и потом ждал срабатывания, в нем уже читал код символа и преобразовывал в символ, который писал в ту самую переменную.
3)ну а вне прерывания у меня просто процедура ждущая пока переменная примет не нулевое значение(естественно при входе обнуляем её)

ну если честно то это я сильно упростил.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 02.07.2011, 23:48   #3
Ang15
Пользователь
 
Регистрация: 02.07.2011
Сообщений: 38
По умолчанию

Понятно. Буду пробовать.
Ang15 вне форума Ответить с цитированием
Старый 04.07.2011, 13:35   #4
Ang15
Пользователь
 
Регистрация: 02.07.2011
Сообщений: 38
По умолчанию

Всё. Написал с использованием прерываний. Программа кривоватая, но что-то делает. Буду улучшать.
Ang15 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
ввод с клавиатуры Sparky Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 6 15.03.2020 14:34
ввод с клавиатуры Акоб Общие вопросы C/C++ 2 22.02.2011 18:00
Ввод с клавиатуры Von Общие вопросы C/C++ 6 22.10.2010 15:14