Форум программистов
 
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

Восстановить пароль
Повторная активизация e-mail


Ответ
 
Опции темы
Старый 29.05.2007, 19:11   #1
Киркоров
 
Регистрация: 29.05.2007
Сообщений: 5
По умолчанию Прерывание от клавы

нужна функция которая фиксирует нажатие клавы на клаве.
Вроде есть такая.Биосовская.
Подробнее:
Накорябал обработчик прерываний от таймера,каждые n раз в секунду должен читать код нажатой клавы,если че то нажато.
Вот и нужна ета функция.
Че делает,куда сохраняет код.

Очень прошу помощи.
Киркоров вне форума Ответить с цитированием
Старый 29.05.2007, 20:04   #2
Vasya
Форумчанин Подтвердите свой е-майл
 
Аватар для Vasya
 
Регистрация: 21.01.2007
Сообщений: 193
По умолчанию

Киркоров прерывание int 16h служит для работы с клавиатурой
использовать можно например так:
mov ah, 10h
int 16h
в этом случае программа продолжит свое выполнение после нажатия на любую клавишу, а регистр AX(EAX) будет содержать код клавиши которую нажал пользователь

Последний раз редактировалось Vasya; 29.05.2007 в 20:07.
Vasya вне форума Ответить с цитированием
Старый 29.05.2007, 20:08   #3
rpy3uH
добрый няша
СуперМодератор
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,808
По умолчанию

int16-00 - считывание символа с клавиаутры.
вход: ah=00.
выход: ah=код сканирования, al=ASCII значение символа.
rpy3uH вне форума Ответить с цитированием
Старый 29.05.2007, 23:15   #4
Киркоров
 
Регистрация: 29.05.2007
Сообщений: 5
По умолчанию

Не это не то че надо.Допустим я завел будильник на 16.00 и за сек до этого нажал клаву 2 и держал 3 сек.Мне надо в 16.00 проверить нажата ли клава 2.
С int 16 не получится.
Киркоров вне форума Ответить с цитированием
Старый 29.05.2007, 23:19   #5
Киркоров
 
Регистрация: 29.05.2007
Сообщений: 5
По умолчанию

Int 16 вроде как ждет пока ты не нажмешь на клаву.Или я ошибаюсь.

oFFtOp:

салат рекурсивный: помидорчик,огурчик,салат
Киркоров вне форума Ответить с цитированием
Старый 30.05.2007, 20:14   #6
rpy3uH
добрый няша
СуперМодератор
 
Аватар для rpy3uH
 
Регистрация: 29.10.2006
Сообщений: 4,808
По умолчанию

тогда тебе надо то, что написал Vasya
Цитата:
Сообщение от Vasya Посмотреть сообщение
Киркоров прерывание int 16h служит для работы с клавиатурой
использовать можно например так:
mov ah, 10h
int 16h
в этом случае программа продолжит свое выполнение после нажатия на любую клавишу, а регистр AX(EAX) будет содержать код клавиши которую нажал пользователь
rpy3uH вне форума Ответить с цитированием
Старый 30.05.2007, 21:47   #7
Киркоров
 
Регистрация: 29.05.2007
Сообщений: 5
По умолчанию

Спасибо,будем смотреть.
Спаааасиб вам,Грузин и Вася.

---
от модера: больше не надо так писать, лучше отзыв написать, чем писать слово "спасибо" повторяя каждую букву 5 раз

Последний раз редактировалось rpy3uH; 31.05.2007 в 20:13.
Киркоров вне форума Ответить с цитированием
Старый 03.06.2007, 20:28   #8
Киркоров
 
Регистрация: 29.05.2007
Сообщений: 5
По умолчанию

Опять пишу.
Не та функция мне нужна.
Мне надо чтоб не ждала нажатия на клаву.

Грубо говоря:

Такая прога
CODE_SEG SEGMENT
==============================
mov ah,10h
int 16h
mov ax, 4c00h
int 21h
==============================
CODE_SEG ENDS
END

будет работать до нажатия клавиши,а мне надо,чтоб сразу завершилась.
Киркоров вне форума Ответить с цитированием
Старый 03.06.2007, 23:09   #9
Vasya
Форумчанин Подтвердите свой е-майл
 
Аватар для Vasya
 
Регистрация: 21.01.2007
Сообщений: 193
По умолчанию

тогда наверное тебе это подойдет
Цитата:
Сообщение от rpy3uH Посмотреть сообщение
int16-00 - считывание символа с клавиаутры.
вход: ah=00.
выход: ah=код сканирования, al=ASCII значение символа.
здесь AH=00: Чтение символа.
Vasya вне форума Ответить с цитированием
Старый 04.09.2007, 10:01   #10
Walker
Пользователь
 
Регистрация: 03.09.2007
Сообщений: 28
По умолчанию

Киркоров, есть функции, которые просто проверяют наличие символа в буфере клавиатуры. Облом щас смотреть, перелистай любой справочник со списком команд прерываний 21h, 10h, 16h. Это несложно -- аналог функции ReadKey на Паскале.
Walker вне форума Ответить с цитированием
Ответ

Здесь нужно купить рекламу за 20 тыс руб в месяц! ) пишите сюда - alarforum@yandex.ru
Без учёта ботов - 20000 человек в день, 350000 в месяц.

Опции темы


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Забыл как сделать запрет на ввод с клавы diznt Помощь студентам 5 20.08.2008 23:26
6 прерывание ленусик Фриланс 1 03.06.2008 16:22
Отслеживание мыши клавы LAFUDR Win Api 1 13.05.2008 12:37
Эмуляция клавы и мыши ЧИЖ Общие вопросы Delphi 4 02.04.2008 07:51
как обрабатывать события с клавы? proglamer Паскаль, Turbo Pascal, PascalABC.NET 13 25.10.2007 11:41