TalismanChet
@TalismanChet
Программист-любитель

Почему не работает клавиатура?

Я пишу ОС на fasm, и столкнулся с проблемой: почему-то не работает прерывание 0х20 для клавиатуры, в дебагегре проверял значение ISR.keyboard.keycode, и он не менялся!

Код на GitHub

Отрывок из кода:
.keyboard:
        pushad
        pushf
        cli
        mov dx, 0x60
        in byte al, dx
        mov byte [0xB8000], al
        mov byte [.keycode], al
        inc dx
        in byte al, dx
        and al, 1
        out byte dx, al
        popf
        popad
        iretd
        .keycode db ?
    ;

Я даже индикатор к экрану вывел, но все равно ничего не происходит
  • Вопрос задан
  • 165 просмотров
Пригласить эксперта
Ответы на вопрос 1
jcmvbkbc
@jcmvbkbc
http://dilbert.com/strip/1998-08-24
почему-то не работает прерывание 0х20 для клавиатуры

я не буду отлаживать твой код, но предложу тебе несколько вопросов, которые помогут тебе посмотреть в нужные места:
- посылает ли клавиатура вообще IRQ?
- настроен ли контроллер прерываний на приём IRQ от клавиатуры?
- размаскирована ли линия IRQ от клавиатуры в контроллере прерываний?
- настроен ли контроллер прерываний на то чтобы вызывать int 0x20 в ответ на IRQ от клавиатуры? [1]
- получает ли процессор прерывание от контроллера прерываний?
- настроена ли запись в IDT для int 0x20 на вызов твоего обработчика?
- разрешены ли прерывания в процессоре?

[1] Коль скоро здесь ты установил базовый вектор первого PIC в 0x20, то клавиатура, посылая IRQ1, должна вызывать int 0x21.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы