1 / 7

Управление клавиатурой

Управление клавиатурой. Scan- код нажатия: 1 < номер клавиши > Scan- код отпускания: 11110000 0< номер клавиши >. Физический буфер клавиатуры. 20 байт. (Порт 60 h ). int 9h. Байт состояния. Выполнение команд ( CTRL-ALT-DEL ). Scan -код, код ASCII 0, расширенный scan- код.

toby
Télécharger la présentation

Управление клавиатурой

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Управление клавиатурой Scan-код нажатия:1<номер клавиши> Scan-код отпускания: 11110000 0<номер клавиши> Физический буфер клавиатуры 20 байт (Порт 60h) int 9h Байт состояния Выполнение команд (CTRL-ALT-DEL) Scan-код, код ASCII 0, расширенный scan-код Буфер BIOS клавиатуры 32байта int 16h int 21h

  2. Программирование порта клавиатуры Первый разряд порта 61h Code segment assume CS:Code int_9h proc far push AX in AL,60h push AX in AL,61h mov AH,AL or AL,80h out 61h,AL mov AL,AH out 61h,AL pop AX <обработка> mov AL,20h out 20h,AL pop AX iret ... 1 t 0

  3. Байт состояния клавиатуры 7 – 1 – режим вставки (Insert); 6 – 1 – режим прописных букв (CapsLock); 5 – 1 – режим цифровой клавиатуры (NumLock); 4 – 1 – режим прокрутки (ScrollLock); 3 – 1 – Alt –нажата; 2 – 1 – CTRL – нажата; 1 – 1 – левый Shift – нажата; 0 – 1 – правый Shift – нажата Байт 417h 7 – 1 – Insert – нажата; 6 – 1 –CapsLock – нажата; 5 – 1 –NumLock– нажата; 4 – 1 –ScrollLock– нажата; 3 – 1 – режим паузы (CTRL - NumLock); 2 1 0 Байт 418h

  4. Драйвер клавиатуры int 16h Функции: Пример: чтение символас клавиатуры mov AH,0 int 16h

  5. Ввод расширенного кода посредством int 21h mov AH,8 ; читаем символ int 21h cmp AL,0; расширенный код? jne Error ; если нет, то ошибка mov AH,8; читаем расш. код int 21h

  6. code segment assume CS:code,DS:code org 100h begin: jmp start OLD_VEC label DWORD IP_OLD DW ? CS_OLD DW ? tsr_9: pushf call CS:OLD_VEC push AX push ES mov AX,0 mov ES,AX mov AL,ES:[417h] and AL,00001000B cmp AL,00001000B jne A1 push CX push BX push SI mov AX,0B800h mov ES,AX mov SI,1 mov CX,2000 cycle: mov AL,ES:[SI] xor AL,00001000B mov ES:[SI],AL inc SI inc SI loop cycle pop SI pop BX pop CX A1: pop ES pop AX iret Обработчик int 9hИнвертирование яркости по нажатию ALT (Ex4_1)

  7. Инсталлятор start: mov AX,3509h int 21h mov IP_OLD,BX mov CS_OLD,ES mov AX,2509h lea DX,tsr_9 int 21h lea DX,start int 27h code ends end begin

More Related