Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Какая команда блокирует клавиатуру  (Прочитано 10362 раз)
0 Пользователей и 1 Гость смотрят эту тему.
sersad
Гость
« : 19-12-2008 14:50 » 

Доброго всем времени суток. Извините если наступаю на те же грабли что и многие которые задавали подобный вопрос. С другой стороны четко поставленный вопрос уже на половину полученный ответ, помогите со второй половиной . Знаю что нужно  остановить порт по адресам 60h  61h  62h  63h  64h  только какая программа вызывает и какой из них нужно останавливать и как задать время для остановки , что бы потом все вернулось.
Записан
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #1 : 19-12-2008 15:02 » 

Какая документация есть?
Что такое - остановить порт?

Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
Sla
Команда клуба

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #2 : 19-12-2008 15:07 » 

рекомендую начать с https://club.shelek.ru/download.php?id=351
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
ObamaBarak
Гость
« Ответ #3 : 08-01-2009 23:14 » 

sersad, то что ты делаешь, можно делать только под ДОСом. В WinNT нет доступа к оборудованию со стандартного Азма. Чтоб было, надо писать на FASM, с использованием функций ядра операционки. Они начинаются с префикса 'zx', далее идет название функции. Полный перечень всех функций можно прочитать в MSDN. У тебя же может получится только консольный ввод-вывод и работа с графикой(простейшее, переключение в графический режим из символьного режима).
Скачай вот эти программы, они бесценны для тебя:
Emu8086 v2.57
WinASM 2.0
Как чуть-чуть поймешь, что к асму нужно подходить с осознанием его легкости, а не с настроем на тяжелый-титанический труд, дам кое-что из графики.
На литературу дать ссылки?
Записан
buisyhanh
Постоялец

vn
Offline Offline

« Ответ #4 : 09-01-2009 04:54 » 

Ищите в моих темах, которые обсуждали много чего - то свьязано с клавиатурой.
Записан
Serg79
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW
« Ответ #5 : 09-01-2009 21:06 » 

Для того чтобы отключить клавиатуру, необходимо установить восьмой бит в 0х61 порту (порт управления клавиатурой) равным единицы. Для ее включения, необходимо данный бит сбросить.

Вот код который отключает а затем обратно включает клавиатуру.
P.S. что бы не затенять весь смысл сказанного, пишу код на 'C'. При желании, переписать его на ассемблер не составит большого труда.
Код:
void lock_unlock_keyboard(void)
{
    /* через порт 0x61 отключаем клавиатуру */
    tmp = inb(0x61);
    outb(tmp|0x80, 0x61);
    /* затем обратно включаем ее */
    outb(tmp,0x61);
}

/* ввод из порта */
extern inline unsigned char inb(unsigned short port)
{
    unsigned char __v;
    __asm__ __volatile__ ("inb %w1, %0" : "=a" (__v) : "Nd" (port));
    return __v;
}

/* вывод в порт */
extern inline void outb(unsigned char value, unsigned short port)
{
    __asm__ __volatile__ ("outb %b0, %w1" : : "a" (value), "Nd" (port));
}
Записан
sersad
Гость
« Ответ #6 : 12-01-2009 20:55 » new

ObamaBarak, буду вам весьма признателен,Serg79, честно скажу что "С" для меня вообще потемки, волею судеб начал изучать ассемблер, и вот пока познаний мало я не буду кидаться в новые языки(для меня)но за сообщение большое спасибо может что выужу из этого.По мере того как что буду узнавать по этой теме напишу, я ее не бросил.
Записан
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines