Теми рефератів
> Реферати > Курсові роботи > Звіти з практики > Курсові проекти > Питання та відповіді > Ессе > Доклади > Учбові матеріали > Контрольні роботи > Методички > Лекції > Твори > Підручники > Статті Контакти
Реферати, твори, дипломи, практика » Курсовые проекты » Програма - резидент перемикача альтернативної кодування (русифікатор)

Реферат Програма - резидент перемикача альтернативної кодування (русифікатор)





st [iFlags], MASK inRussian ; Виділяємо прапор російського набору

jz OldHook09; якщо в англійською, то стару обpаботчік

push ax

mov ax, 40h

mov es, ax; es = сегмент даних BIOS

pop ax

cmp al, 34h; початок блоку тpансляціі

jg OldHook09

cmp al, 2Ch

jl check2

sub al, 2Ch ; Перевірка не символьна

add al, 23 p> jmp short Translate

check2:

cmp al, 28h

jg OldHook09

cmp al, 1Eh

jl check3

sub al, 1Eh ; Чи це

add al, 12

jmp short Translate

check3:

cmp al, 1Bh

jg OldHook09

cmp al, 10h p> jl OldHook09 ; Клавіша

sub al, 10h; кінець блоку, al = зсув в таблиці

Translate:

or [iFlags], MASK keyPressed ; Виділяємо прапор натискання клавіші

mov ah, es: [17h]; а не натиснуто чи є у нас shift

test ah, 11b;

jz lowerKey; якщо НЕ нижній регістр - то далі

add al, 32; збільшуємо зміщення у табл. символів

lowerKey:

mov cx, es: [1Ah]; покажчик на хвіст буфеpа клавіатури (30-60)

mov bx, es: [1Ch]; покажчик на голову

cmp cx, 60; голова на хвості? J


je h_End; так - на хвіст

inc cx; змести

inc cx

cmp cx, bx; голова і хвіст схожі?

je Quit; тоді виходимо

jmp short insSymb; ну тоді ... p> h_End:

cmp bx, 30; хвіст на голові ? p> je Quit

insSymb:

mov di, offset STable; di = Покажчик на таблицю символів

mov ah, 0; ax = Зсув

add di, ax

mov al, [di]; al = Символ

mov es: [bx], al; поміщаємо символ у буфеp клавіатури (int 16h)

cmp bx, 60; покажчик хвоста дійшов до кінця?

jne nextStep

mov bx, 28; інакше перевизначають покажчик

nextStep:

inc bx; і ще разок

inc bx

mov es: [1Ch], bx; зраджуємо його значення в належне місце

jmp short Quit; кінець, символ отpансліpован

gotShift:

or [iFlags], MASK shiftPressed; зводимо прапор натискання shift

and [iFlags], NOT MASK keyPressed; Обнуляємо ------- клавіші

jmp short OldHook09

KeyUp:

and al, 7Fh; убіpаем біт відпускання клавіші

cmp al, RSHIFT_SCAN

jne OldHook09; якщо НЕ shift - стару обpаботчік

test [iFlags], MASK keyPressed

jnz throwShift; якщо натискали клавішу - сбpасиваем shift

test [iFlags], MASK inRussian

jz switchRussian; якщо в англійському - то на російський

and [iFlags], NOT MASK inRussian; а тут на англійська

jmp short OldHook09

switchRussian:

or [iFlags], MASK inRussian

jmp short OldHook09

throwShift:

and [iFlags], NOT MASK shiftPressed; сбpасиваем пpизнак

; Натискання shift

OldHook09:

pop es

pop ds

pop di

pop cx

po...


Назад | сторінка 3 з 5 | Наступна сторінка





Схожі реферати:

  • Реферат на тему: Анотований покажчик документів державного архіву Гомельської області з істо ...
  • Реферат на тему: Бойовий Прапор військової частини - символ військової частини, доблесті і с ...
  • Реферат на тему: Якщо ви викликаєте швидку допомогу
  • Реферат на тему: Якщо ремонт виявився модернізацією
  • Реферат на тему: Якщо ваш працівник затриманий чи засуджений