Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

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

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

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 03.12.2010, 16:36   #1
Dimon12345
Пользователь
 
Регистрация: 03.12.2010
Сообщений: 10
По умолчанию Перекрытие прерывания

Здравствуйте. Использую tasm.
Задача: перекрыть прерывание (DOS) клавиатуры т.о. , что бы игнорировать клавиши верхнего ряда букв (q, w,...o,p).

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

Последний раз редактировалось Dimon12345; 03.12.2010 в 17:24.
Dimon12345 вне форума Ответить с цитированием
Старый 03.12.2010, 18:01   #2
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

вот накидала быстренько, игнорирует w
Код:
.model tiny
.code
org 100h
main:
;======================================
;находим таблицу векторов прерываний
;======================================
	push es;
	xor ax,ax
	mov es,ax
;======================================
;сохраняем старый вектор
;======================================
	mov ax,word ptr es:[09h*4]
	mov word ptr old_handler,ax	;сохранение селектора
	mov ax,word ptr es:[09h*4+2]
	mov word ptr old_handler+2,ax	;сохранение сегмента
;======================================
;записываем новый вектор
;======================================
	mov ax,cs
	mov word ptr es:[09h*4+2],ax	;записываем сегмент
	mov ax,offset handler
	mov word ptr es:[09h*4],ax	;записываем селетор
;======================================
;оставляем программу резедентно
;======================================
	pop es
	mov bx,offset last_byte
	int 27h

;======================================
;новый обработчик
;======================================
handler:
	push es ds si di cx bx dx ax
	
	xor ax,ax
	in al,60h
	;w
	cmp al,11h	
	jne standart_handler
;======================================
;завершение обработчика
;======================================
end_handler:
        mov al,20h  
        out 20h,al  
        pop ax dx bx cx di si ds es
        iret
;======================================
;стандартный обработчик
;======================================        
standart_handler:
	pop ax dx bx cx di si ds es
	jmp dword ptr cs:old_handler
	
	old_handler dd ?
	d dw 16
last_byte:
end main
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 03.12.2010, 18:03   #3
Sparky
Участник клуба
 
Аватар для Sparky
 
Регистрация: 15.05.2009
Сообщений: 1,222
По умолчанию

а вообще почитайте Зубкова
Единственное, что ограничивает полет мысли программиста-компилятор
Sparky вне форума Ответить с цитированием
Старый 03.12.2010, 18:30   #4
Dimon12345
Пользователь
 
Регистрация: 03.12.2010
Сообщений: 10
По умолчанию

Спасибки, буду разбираться...
Dimon12345 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Перекрытие родительских событий sonya__ Помощь студентам 0 14.11.2010 18:29
Перекрытие родителем подчиненной формы. Alex Cones Общие вопросы Delphi 2 08.05.2010 16:44
Перекрытие одного объекта другим Djem1991 Общие вопросы Delphi 3 11.06.2009 13:17
Перекрытие нескольких TImage Саня Компоненты Delphi 12 05.02.2009 23:03