v4567
Зарегистрирован: 24.02.2012 Сообщения: 13
|
Добавлено: Сб Окт 27 2012 23:13 Заголовок сообщения: Как в dos записать вектора прерываний для своих обработчиком |
|
|
Ребята подскажите пожалуйста как в dos записать вектора прерываний для своих обработчиком клавиатуры и таймера.
Написал небольшую программку она записывается на флешку, на флешке загрузчик, гружу с флешки программку и она работает без операционной системы.
В этой программе записываю вектора прерываний для клавиатуры и таймера следующим образом:
Код: |
xor ax,ax
mov es,ax
mov di,20h
mov ax,tm
mov es:[di],ax
mov ax,kl
mov es:[di+4],ax
mov ax,cs
mov es:[di+2],ax
mov es:[di+6],ax
kl:
обработчик прерывания от клавиатуры
tm:
обработчик прерывания от таймера
|
Пробовал эту прогу запустить под dos но прога не работает а dos намертво виснет.
Если кто знает подскажите пожалуйста как такое ( в смысле переписать вектора прерываний для своих обработчиков) можно осуществить под dos при помощи функций dos-а. Если это как то осуществимо, то при запуске под windows (программа консольная) в командной строке cmd (по сути это эмулятор dos-а) программа будет работать?
У меня ещё два вопроса.
1. После срабатывания прерывания от клавиатуры, код нажатой клавиши узнаю вот таким образом:
Код: |
in al,60h
cmp al,.....
|
Насколько я понял таки образом в al попадает ASCII код нажатой клавиши. Но это код который прошёл уже некоторую обработку то есть при нажатии клавиши контролером клавиатуры генерируется совсем другой код. Так это, или я ошибаюсь? Если так то как получить этот код нажатой клавиши?
2. Курсор убираю при помощи первой функции 10 прерывания биос:
Код: |
mov ah,1
mov ch,20h
int 10h
|
Подскажите пожалуйста как это сделать при помощи портов, не используя функции биос и dos. Облазил вес интернет но так и не нашёл как это сделать при помощи портов.
За помощь заранее благодарен! |
|