|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
24.05.2016, 15:32 | #1 |
Форумчанин
Регистрация: 15.11.2015
Сообщений: 151
|
Установить состояние регистров клавиатуры
Установить такое состояние регистров клавиатуры: NUM LOCK - выключен, CAPS LOCK - включен, SCROLL LOCK – выключен.
Есть код который выводит состояние этих кнопок, но не знаю как сделать что бы программа сама их включала выключала и выводила их состояние. Так же буду благодарен за комментарии к коду Код: Код:
|
25.05.2016, 07:24 | #2 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
Контроллеру клавиатуры соответствуют порты с номерами от 60h до 6Fh,
хотя для всех/стандартных операций достаточно портов 60h и 61h. 61h для чтения и записи — регистр управления клавиатурой. --------------------------------------------------------------------- Если в старший бит этого порта записать 1, то клавиатура будет заблокирована, если 0 — разблокирована. Другие биты этого порта менять нельзя, т.к. они управляют другими устройствами. Чтобы изменить состояние клавиатуры, надо считать байт из этого порта, изменить бит 7 и снова записать в порт 61h. 60h для чтения - регистр управления клавиатурой. --------------------------------------------------------------------- При чтении из него можно получить скан-код последней нажатой клавиши. Именно так лучше всего реализовывать резидентные программы, перехватывающие прерывание IRQ1, т.к. по этому коду можно определять момент нажатия и отпускания любой клавиши. 60h для записи — регистр управления клавиатурой. --------------------------------------------------------------------- Байт, записанный в этот порт интерпретируется как команда. Клавиатура отвечает на все команды (кроме EE/FE), скан-кодом FAh (подтверждение), который поглощается BIOS, так что, если мы не перехватываем стандартный обработчик, о байте подтверждения можно не беспокоиться. Основные команды перечислены ниже: Код:
Нашедшего выход - затаптывают первым..
|
25.05.2016, 09:28 | #3 | |
Лис
Старожил
Регистрация: 18.09.2015
Сообщений: 2,409
|
Цитата:
Если писать наобум, то вы можете убить компьютер. Сколько можно повторять. 61h порт относился к клавиатуре только в XT. В AT, PS/2 и всех современных компьютерах это порт не клавиатуры. Доказательства: Пруф 1 Пруф 2 (IBM PS/2) Если надо могу ещё 10 ссылок привести.
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
У дзен программиста программа делает то что он хотел, а не то что он написал . |
|
25.05.2016, 10:17 | #4 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
Всё правильно. Этот порт использовали XT-контролёры 8255.
Ну ты прям жути нагнал! У новых контролёров клавиатуры 8042 этот порт изъят. Он перекочевал в системную логику и эмулируется системой. В юзер-моде записать в него ты просто не сможешь. Читать - пожалуйста..
Нашедшего выход - затаптывают первым..
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Содержимое регистров | maxwelldream | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 1 | 15.01.2011 09:28 |
разрабоать Ассемблер программу, отображающую на экране текущее состояние байтов статуса клавиатуры. | Ivan73 | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 8 | 15.06.2009 22:30 |
программа позволяющая установить с клавиатуры новую дату и новое текущее время | men73 | Фриланс | 1 | 11.06.2009 20:23 |
состояние регистров клавиатуры | olen` | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 10 | 05.06.2009 22:34 |
много регистров | nntpaha | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 2 | 22.12.2007 19:01 |