Курсовая работа: Низькорівневе програмування контроллера клавіатури
mov [ES:9*4],AX
mov AX,[OldKbdIntSegment]
mov [ES:9*4+2],AX
sti
pop ES
popa
ret
ENDP RestoreOldKeyboardInterrupt
ENDS
END
А ось приклад розробки програми на мові С:
void interrupt (*SvInt09)(void)=NULL;
int IsBIOSActive=1;
char KeyPressed[256];
char CurKey;
void ProcessKeyb(void)
{ static PrevKey=0;
char key,IsGray;
key=inportb(0x60);
if(PrevKey==224) IsGray=0x80; else IsGray=0;
if(key!=224) /* если не признак черной клавиши"... */
{ if(key&0x80) /* клавиша отпущена */
KeyPressed[(key&0x7F)|IsGray]=0;
else /* клавиша нажата */
KeyPressed[(key&0x7F)|IsGray]=1;
}
if(!(key&0x80)) CurKey=key|IsGray;
PrevKey=key;
}