|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.07.2011, 23:12 | #1 |
Пользователь
Регистрация: 02.07.2011
Сообщений: 38
|
Низкоуровневый ввод с клавиатуры
Недавно начал изучать ассемблер для x86 процессоров. Сейчас пытаюсь реализовать функцию ввода через клавиатуру посредством прямого обращения к регистрам и буферам контроллера клавиатуры, а не через прерывания или API. Как первый этап нашёл упрощённый эмулятор ПК Жмакина. Когда подготавливаю регистры контроллера (т.е. флаги задаю), то всё нормально. Но процессор просто бежит дальше. Подскажите, как заставить программу остановиться и заставить подождать, пока я введу строку. Т.е. не конкретно код, а дать направление, куда дальше копать, т.е посредством чего реализовывается (таймер, аппаратные прерывания...), т.к. я даже чёткий запрос в Google оформить не могу. Заранее спасибо.
|
02.07.2011, 23:26 | #2 |
Старожил
Регистрация: 28.01.2009
Сообщений: 21,000
|
лично я подобное делал так:
1)заводил переменную для хранения символа введеного 2)ставил обработчик на IRQ линию от клавы, и потом ждал срабатывания, в нем уже читал код символа и преобразовывал в символ, который писал в ту самую переменную. 3)ну а вне прерывания у меня просто процедура ждущая пока переменная примет не нулевое значение(естественно при входе обнуляем её) ну если честно то это я сильно упростил. Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел. Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите. |
02.07.2011, 23:48 | #3 |
Пользователь
Регистрация: 02.07.2011
Сообщений: 38
|
Понятно. Буду пробовать.
|
04.07.2011, 13:35 | #4 |
Пользователь
Регистрация: 02.07.2011
Сообщений: 38
|
Всё. Написал с использованием прерываний. Программа кривоватая, но что-то делает. Буду улучшать.
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
ввод с клавиатуры | 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 |