Ïðîöåäóðà BIOS êëàâèàòóðû èçíóòðè
Ìû íå ñîáèðàåìñÿ ïîñòðî÷íî àíàëèçèðîâàòü ïðîãðàììó êëàâèàòóðû BIOS.
Íî â íåé, îäíàêî, åñòü èíòåðåñíûå ìåñòà. Íåêîòîðûå èç íèõ ìû
óïîìÿíóëè ðàíüøå, íàïðèìåð ïîäïðîãðàììó K4, êîòîðàÿ ñäâèãàåò
óêàçàòåëü áóôåðà.
Ïðîãðàììà KB_INT èñïîëüçóåò íåñêîëüêî òàáëèö çíà÷åíèé êëàâèø.
Åñëè âû ïîñìîòðèòå ïðîãðàììó, òî óâèäèòå, ÷òî ýòè òàáëèöû
èñïîëüçóþòñÿ ðàçëè÷íûìè ñïîñîáàìè. Òàáëèöû, ñîäåðæàùèå çíà÷åíèÿ
êîäîâ ñêàíèðîâàíèÿ, èñïîëüçóþòñÿ äëÿ ïîèñêà øàáëîíîâ. BIOS
ñðàâíèâàåò êîä ñêàíèðîâàíèÿ êëàâèàòóðû ñî çíà÷åíèÿìè â òàáëèöå.
Microsoft (R) Macro Assembler Version 5.00 1/1/80 04:06:15
Ôèã. 9.3 Ñîñòîÿíèå êëàâèàòóðû Page 1-1
PAGE ,132
TITLE Ôèã. 9.3 Ñîñòîÿíèå êëàâèàòóðû
0000 STACK SEGMENT STACK
0000 0040[ DW 64 DUP (?)
????
]
0080 STACK ENDS
0000 CODE SEGMENT
ASSUME CS:CODE
0000 0000 LITTLE DW 0
0002 0000 BIG DW 0
0004 COUNT PROC FAR
0004 1E PUSH DS ; Àäðåñ âîçâðàòà â ÄÎÑ
0005 2B C0 SUB AX, AX
0007 50 PUSH AX
0008 ADD_ONE:
0008 2E: FF 06 0000 R INC LITTLE
000D 75 05 JNZ STILL_LOW
000F 2E: FF 06 0002 R INC BIG
0014 STILL_LOW:
0014 B4 01 MOV AH, 1 ; Ïðîãðàììà îïðîñà ñòàòóñà êëàâèàòóðû
0016 CD 16 INT 16H
Ñîäåðæàíèå ðàçäåëà