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

Обсуждение

Неизвестный
29.12.2006, 11:37
общий
это ответ
Здравствуйте, 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=время нажатия клавиши, мкс
...
Форма ответа