Отправляет email-рассылки с помощью сервиса Sendsay
  Все выпуски  

Ассемблер? Это просто! Учимся программировать


РАССЫЛКИ ПОРТАЛА RUSFAQ.RU

/ КОМПЬЮТЕРЫ И ПО / Языки программирования / Assembler (Ассемблер)

Выпуск № 646
от 02.01.2007, 19:05

Администратор:Калашников О.А.
В рассылке:Подписчиков: 368, Экспертов: 30
В номере:Вопросов: 1, Ответов: 1


Вопрос № 68952: Здравствуйте уважаемые эксперты! я столкнулся вот с какой проблемой: в программе необходимо дожидаться нажатия клавиши. в соответствии с тем какая клавиша нажата присвоить регистрам необходимые значения и вызвать процедуру. после этого надо д...

Вопрос № 68.952
Здравствуйте уважаемые эксперты!
я столкнулся вот с какой проблемой:
в программе необходимо дожидаться нажатия клавиши. в соответствии с тем какая клавиша нажата присвоить регистрам необходимые значения и вызвать процедуру. после этого надо дождаться отпускания этой клавиши, вызвать другую процедуру и сохранить время нажатия клавиши.
Огромная просьба, помогите мне, если такой алгоритм вообще реалиzуем. ( программа нереzидентная)
Отправлен: 28.12.2006, 18:55
Вопрос задал: Akulыч (статус: Посетитель)
Всего ответов: 1
Мини-форум вопроса >>> (сообщений: 0)

Отвечает: ADSota
Здравствуйте, Akulыч!

Алгоритм реализуеться просто. Добавление - при запуске под чистым дос при работе нужно будет очищать буфер клавиатуры (из какой-либо своей процедуры).

CPUFREQ dd 2600;частота процессора в мегагерцах
...
in al,60h;последняя клавиша перед запуском кода
mov ah,al
wait1:
in al,60h
;просматриваем - нет ли "новой" нажатой клавиши
test al,80h
jnz wait1
cmp al,ah
je wait1
mov ah,al
push eax
;засекаем время
rdtsc
push edx eax
call yoursub1;первая ваша процедура al=скан код клавиши, если хотите ASCII код - получите с помощью функций БИОС или ДОС.
pop ecx ebx eax
wait2:
in al,60h
cmp al,ah
je wait2
rdtsc
sub edx,ebx
sub eax,ecx
div dword[CPUFREQ]
call yoursub2;вторая ваша процедура eax=время нажатия клавиши, мкс
...
---------
Открыть глаза навстречу солнцу
Ответ отправил: ADSota (статус: Профессионал)
Россия, Зеленоград
Тел.: 8-916-53-43-916
ICQ: 84611301
----
Ответ отправлен: 29.12.2006, 11:37


Отправить вопрос экспертам этой рассылки

Приложение (если необходимо):

* Код программы, выдержки из закона и т.п. дополнение к вопросу.
Эта информация будет отображена в аналогичном окне как есть.

Обратите внимание!
Вопрос будет отправлен всем экспертам данной рассылки!

Для того, чтобы отправить вопрос выбранным экспертам этой рассылки или
экспертам другой рассылки портала RusFAQ.ru, зайдите непосредственно на RusFAQ.ru.


Форма НЕ работает в почтовых программах The BAT! и MS Outlook (кроме версии 2003+)!
Чтобы отправить вопрос, откройте это письмо в браузере или зайдите на сайт RusFAQ.ru.


© 2001-2006, Портал RusFAQ.ru, Россия, Москва.
Идея, дизайн, программирование: Калашников О.А.
Email: adm@rusfaq.ru, Тел.: +7 (926) 535-23-31
Авторские права | Реклама на портале
Версия системы: 4.38 от 20.12.2006
Яндекс Rambler's Top100

В избранное