![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 | |
Пользователь
Регистрация: 15.12.2011
Сообщений: 31
|
![]()
Здравствуйте! Ребята, подскажите, не знаю откуда копать и куда. Есть задача:
Цитата:
|
|
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]()
Стандартные методы - это что-то вроде процедуры read, которая добывает элементы из буфера клавиатуры.
Вам, насколько я понял, нужно обойтись без этой процедуры, а работать с буфером клавиатуры напрямую. Именно это и будет нестандартным методом. PS. Если С++/С# есть способ задания абсолютного адреса, то Ассемблер Вам не нужен. |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 15.12.2011
Сообщений: 31
|
![]()
можно поподробнее?
|
![]() |
![]() |
![]() |
#4 |
Участник клуба
Регистрация: 23.12.2010
Сообщений: 1,129
|
![]()
Суть такова.
1) Про С# забудь сразу. Эта задача на нем принципиально нерешаема. 2) Сделать такое в windows-приложении тоже нельзя, без написания драйвера. Драйвер писать ты вряд ли захочешь, верно? 3) Потому остается два пути. Писать и запускать приложение под dos, либо писать dos-приложение и запускать его в сеансе эмуляции под windows. Сам код будет выглядеть одинаково в обоих случаях, только в первом придется еще dosbox поставить. 4) Язык можно использовать любой, позволяющий адресовать память напрямую. Ассемблер, паскаль, C++, что больше нравится. 5) Стандартными способами чтения данных с клавиатуры считаются использование прерывания 16h или перехват аппаратного прерывания 9 и получение кода нажатой/отпущенной клавиши из порта контроллера клавиатуры. Нестандартным же, исходя из условия задачи, будет чтение буфера, заполняемого девятым прерыванием. 6) Короче говоря, тебя интересуют следующие адреса: 480h (два байта) - начало буфера клавиатуры (добавляешь 400h и получаешь адрес, обычно там 1eh) 482h (2 байта) - конец буфера клавиатуры + 1 (тоже добавляешь 400h и получаешь адрес, обычно там 3eh) 41ah (два байта) - адрес следующего символа в буфере 41ch (2 дайта) - адрес свободного слота в буфере Ну и сам буфер, соответственно, в котором лежат коды клавиш. Твоя задача - прочитать их оттуда и обработать. |
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 15.12.2011
Сообщений: 31
|
![]()
ок, спасибо, попробую
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Очистка буфера клавиатуры | Van-89 | Паскаль, Turbo Pascal, PascalABC.NET | 6 | 11.09.2012 19:40 |
Как убрать Enter из буфера клавиатуры? | Farrel | Qt и кроссплатформенное программирование С/С++ | 1 | 15.09.2011 22:08 |
Очистка буфера клавиатуры | Hell Knight | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 01.03.2011 18:15 |
Иллюстрация работы буфера клавиатуры | VaSS | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 04.05.2010 22:44 |
работа буфера клавиатуры | Kaljaida | Фриланс | 11 | 04.05.2010 13:02 |