Page 26 - 4875
P. 26

Стандартний обробник клавіатурних переривань, що входять в
                           BIOS працює так:
                                  -  зчитує з порта 60h Scan Code натисненої клавіші.
                                  -  записує  визначене  по  Scan  Code  значення  ASCII  коду
                           натисненої клавіші в спеціальний буфер клавіатури, що розміщений в
                           області даних BIOS.
                                  -  здійснює  установку  7  біта  порту  60h  в  „1”  (дозвіл
                           паралельної роботи клавіатури) наприклад так:
                                         in     al,61h
                                         push   ax
                                         or     dl,80h
                                         out    61h,al
                                         pop    ax
                                         out    61h,al

                                  -  повертає цей біт в початковий стан.
                                  -  записує  в  порт  20h  значення  20h  для  правильного
                           завершення роботи апаратного переривання:
                                         mov    al,20h
                                         out    20h,al

                                  Обробник  переривання  int  09h  не  просто  записує  значення
                           ASCII  коду  в  буфер,  а  і  відслідковує  натиск  Ctrl  +  Alt  +  Del,  Print
                           Screen, а також стан Shift, Caps Lock.
                                  Буфер  клавіатури  має  довжину  32  байти  і  розміщений  за
                           адресою  0000h:041Еh.  У  випадку  використання  порту  PS/2  задається
                           вмістом двох слів пам’яті з адресами:
                                         0000h:0480h  –  компонент  зміщення  адресу  початку
                           буфера;
                                         0000h:0482h  –  компонент  зміщення  адресу  кінця
                           буфера.
                                  Буфер  організований  циклічно,  тобто  при  його  переповненні
                           старі значення будуть втрачатися.
                                  Дві  комірки  пам’яті  0000h:041Аh  та  0000h:041Сh  містять
                           відповідно покажчики на початок і кінець буфера при чому, якщо їхні
                           значення  рівні,  то  буфер  пустий.  Тобто  очистити  буфер  можна
















                                                           25
   21   22   23   24   25   26   27   28   29   30   31