|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
26.05.2016, 15:45 | #1 |
Форумчанин
Регистрация: 15.11.2015
Сообщений: 151
|
Заменить стандартный обработчик клавиатуры(вывод скан кодов)
Есть программа которая выводит скан код нажатия \ отпускания клавиши, но она использует прерывание 16h, преподу это не понравилось и он сказал что надо заменить своей процедурой обработки прерывания от клавиатуры. Нужно что бы программа делала все тоже, только не используя 16h.
Помогите, пожалуйста, разобраться с этим, так как сам в ассемблере разбираюсь слабо. Код:
|
26.05.2016, 16:57 | #2 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
Max00766, чё сам думаешь по этому поводу?
..или будем ждать готового решения? Читай с порта(60h) и так-же выводи на экран. Благо литературы в гугле хватает. Если что-то конкретное не получается, тогда можно спросить здесь.
Нашедшего выход - затаптывают первым..
|
27.05.2016, 10:59 | #3 | |
Участник клуба
Регистрация: 11.01.2010
Сообщений: 1,139
|
R71MT,
вот этого пункта правил не хватало на сайберфорум (сперто с Компьютерного форума Ru.Board ) Цитата:
|
|
27.05.2016, 11:28 | #4 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
Mikl___, хорошо сказано, лучше не придумаешь.
Здесь хоть ТС просит помочь, а в клинических случаях от студентов и этого не дождёшься. Как-будто так и надо: - "написать программу" ..и всё!
Нашедшего выход - затаптывают первым..
|
27.05.2016, 13:03 | #5 |
Форумчанин
Регистрация: 15.11.2015
Сообщений: 151
|
Я с помощью людей написал такой код, который вроде бы заменяет стандартный обработчик, можете проверить и сказать что не так?
Код:
|
27.05.2016, 15:04 | #6 |
Форумчанин
Регистрация: 15.11.2015
Сообщений: 151
|
Актуально
|
27.05.2016, 20:31 | #7 |
Форумчанин
Регистрация: 15.11.2015
Сообщений: 151
|
Готовый код, может кому-то пригодится
Код:
|
29.05.2016, 17:46 | #8 |
Участник клуба
Регистрация: 16.06.2011
Сообщений: 1,428
|
Max00766, здесь сам чёрт ногу сломает.. Ты хоть что-нибудь понял в этом коде? Если тебе чисто сдать задание и всё, то это нормально. Если-же (как написАл Mikl___) ты выбрал этот путь, то должен представлять себе, что ты делаешь.
Когда ты нажимаешь на клавишу, INT-09h помещает коды этой клавиши - в буфер клавиатуры. Далее, когда из пользовательской программы вызываются клавиатурные сервисы типа INT-16/21h, они просто читают эту клавишу из буфера клавиатуры, куда её поместил INT-09h. Если оттрасировать в отладчике вызов INT-16h с AH=0, то можно увидеть, что обработчик этого прерывания сперва настраивается на область памяти (0040:0000h), считавает из клавиатурного буфера клавишу, а потом проверяет, какая функция указана при вызове (в нашем случае AH=0). Далее, в зависимости от номера функции выполняет те или иные действия. Одним словом, в буфер записывается любое нажатие клавиш вне зависимости от того, вызывались-ли клавиатурные сервисы или нет. Скачай какой-нибудь отладчик реального режима (я остановился на AVPUtil) и поройся в обработчиках прерываний. Это я к тому, что можно вполне обойтись без перехвата прерываний и чтения портов. Скрин отладчика при входе в функцию(0) INT-16h:
Нашедшего выход - затаптывают первым..
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Чем можно заменить стандартный DataGridView в плане дизайна WinForms? | Таксист | C# (си шарп) | 2 | 08.08.2015 22:33 |
Ввод последовательности кодов символов с клавиатуры | Alexey_Suprun | Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM | 0 | 12.01.2014 14:23 |
обновление в блоге - Расшифровка скан-кодов клавиш | Pblog | Обсуждение статей | 0 | 31.05.2011 21:30 |
Как заменить стандартный вид ползунка (thumb) в компоненте TTackBar своим собственным? | SkAndrew | Общие вопросы Delphi | 2 | 11.08.2008 16:26 |