Assembler äëÿ íà÷èíàþùèõ

Ïðîöåäóðà 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



Ñîäåðæàíèå ðàçäåëà