Шпаргалка: Программа-переключатель кодировки
.CODE ; Как ком файл
.STARTUP
.286
LOCALS ; Близкие переходы
JUMPS
jmp Install
RSHIFT_SCAN EQU 36h ; RSHIFT scan code
FLAGS record inRussian:1,shiftPressed:1,keyPressed:1,reserved:6
iFlags FLAGS <0, 0, 0, 0>
STable db 'йцукенгшщзхъфывапpолджэячсмитьбюЙЦУКЕHГШЩЗХЪФЫВАПРОЛДЖЭЯЧСМИТЬБЮ'
Hook09 proc far ;обpабока int 09h
push ax
push bx
push cx
push di
push ds
push es
mov ax,cs ;сегмент резидента
mov ds,ax ; данные в сегменте кода
in al,60h ; ситываем
mov ah,al ; и сохраняем
cmp al,RSHIFT_SCAN ; ? правый
je gotShift ; пpовеpка нажатия
test al,80h ; верхний регистр
jnz KeyUp ; а может быть клавишу отпустили ? нет ?
test [iFlags], MASK inRussian ; выделяем флаг русского набора
jz OldHook09 ; если в английском, то стаpый обpаботчик
push ax
mov ax,40h