Здесь может быть несколько проблем, так как вы еще не опубликовали полный код написанного вами кода. Не могли бы вы объяснить, чего именно вы пытаетесь достичь?
Если ISR вызывается и не обрабатывается, вы ничего не сможете сделать, так что имейте это в виду. Ваша проблема может быть связана с тем, как вы устанавливаете ISR в таблицу векторов прерываний.
- В реальном режиме вы делаете это с INT 21h, AH = 25h
- В защищенном режиме в DJGPP вам необходимо использовать функцию DPMI (либо с использованием функций INT 21H, либо с использованием функций C. См. Документация DPMI
- Блокировка памяти для ISR также необходима при работе в PM, поскольку память может быть «выгружена» (это необходимо для ISR, потому что мы действительно не «знаем», когда она будет работать).
В любом случае, ваш ISR должен выглядеть примерно так:
newInt9:
enter 0,0
push eax
in al, 60h
mov [raw_key], al
mov al, 20h
out 20h, al
pop eax
leave
iret
; ENDPROC