Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Assembler Прерывание

57K
24 мая 2010 года
xWinDx
15 / / 24.05.2010
Всем доброе время суток....
Нужна срочно ваша помощь...может вас не затруднит...
Задача такая, заменить прерывание от клавиатуры... так чтоб при нажатии на клавишу выводилось на 3 символа вперёд...(Например при нажатии 1 выводит 4, на "a" выводит "d") Спасибо всем заранее...
Нужно очень срочно... Спасибо...
399
25 мая 2010 года
KIV
432 / / 20.01.2009
в DOS?
57K
26 мая 2010 года
xWinDx
15 / / 24.05.2010
Да в DOC, help me, plz))))
56K
26 мая 2010 года
_EXP_
13 / / 13.05.2010
Ну в чем проблема используй вставки asm или старые функции intdos и intdosx , но они остались только в turbo C++. Примеры с этими функциями есть на сайте!
399
26 мая 2010 года
KIV
432 / / 20.01.2009
Ну перехватить прерывание легко:
Код:
... Сохранение старого обработчика и установка нового ...
push es
xor ax, ax
mov es, ax
mov ax, [9 * 4]
mov [old_keyboard_handler_seg], ax
mov ax, [9 * 4 + 2]
mov [old_keyboard_handler_ofs], ax
mov ax, cs
mov [9 * 8], ax
mov [9 * 8 + 2], keyboard_handler
pop es
... Восстановка старого обработчика ...
push es
xor ax, ax
mov es, ax
mov ax, [old_keyboard_handler_seg]
mov [9 * 8], ax
mov ax, [old_keyboard_handler_ofs]
mov [9 * 8 + 2], ax
pop es
... Обработчик прерывания ...
keyboard_handler:
    ... Наши действия до выполнения оригинального обработчика ...
    pushf
    call dword[keyboard_handler]
    ... Наши действия после оригинального обработчика ...
    iret
... Данные программы ...
keyboard_handler:
      keyboard_handler_seg dw ?
      keyboard_handler_ofs dw ?

Поскольку заменить символ возвращаемый контроллером клавиатуры, насколько мне известно, не представляется возможным, то остаётся только после вызова оригинального обработчика заменить символ в буфере клавиатуры.
252
27 мая 2010 года
koderAlex
1.4K / / 07.09.2005
 
Код:
int09h_handler:
in al,60h     ;читаем скан код
xlat           ;преобразуем скан код в аски (в es:bx должен быть указатель на таблицу перекодировки)
add al,3     ; +3
mov ah,0eh;выводим на экран
xor bx,bx   ;через биос
int 10h


что-то в таком духе )
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог