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

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

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.04.2013, 23:23   #1
monro86
Пользователь
 
Регистрация: 15.12.2011
Сообщений: 31
Восклицание Анализ буфера клавиатуры нестандартным методом

Здравствуйте! Ребята, подскажите, не знаю откуда копать и куда. Есть задача:
Цитата:
Разработать программу, которая анализируя буфер клавиатуры выводит нажатые клавиши и осуществляет перемещение курсора (без использования стандартных функций) на экране справа на лево начиная с нижнего правого угла.
Буду писать или на С++ или на С#. Но я ума не приложу как нестандартными методами? Ассемблер и С дружат? Что делать? Буду очень признателен!
monro86 вне форума Ответить с цитированием
Старый 10.04.2013, 07:44   #2
s-andriano
Старожил
 
Аватар для s-andriano
 
Регистрация: 08.04.2012
Сообщений: 3,229
По умолчанию

Стандартные методы - это что-то вроде процедуры read, которая добывает элементы из буфера клавиатуры.
Вам, насколько я понял, нужно обойтись без этой процедуры, а работать с буфером клавиатуры напрямую. Именно это и будет нестандартным методом.

PS. Если С++/С# есть способ задания абсолютного адреса, то Ассемблер Вам не нужен.
s-andriano вне форума Ответить с цитированием
Старый 10.04.2013, 22:30   #3
monro86
Пользователь
 
Регистрация: 15.12.2011
Сообщений: 31
По умолчанию

можно поподробнее?
monro86 вне форума Ответить с цитированием
Старый 10.04.2013, 23:26   #4
Son Of Pain
Участник клуба
 
Регистрация: 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 дайта) - адрес свободного слота в буфере
Ну и сам буфер, соответственно, в котором лежат коды клавиш.

Твоя задача - прочитать их оттуда и обработать.
Son Of Pain вне форума Ответить с цитированием
Старый 11.04.2013, 22:24   #5
monro86
Пользователь
 
Регистрация: 15.12.2011
Сообщений: 31
По умолчанию

ок, спасибо, попробую
monro86 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Очистка буфера клавиатуры 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