Шпаргалка: Программа-переключатель кодировки
mov bx,es:[1Ch] ; указатель на голову
cmp cx,60 ; голова на хвосте ? -
je h_End ; да - на хвост
inc cx ; сместимся
inc cx
cmp cx,bx ; голова и хвост похожи ?
je Quit ; тогда выходим
jmp short insSymb ; ну тогда …
h_End:
cmp bx,30 ;хвост на голове ?
je Quit
insSymb:
mov di, offset STable ; di = указатель на таблицу символов
mov ah,0 ; ax = смещение
add di,ax
mov al,[di] ; al = символ
mov es:[bx],al ; помещаем символ в буфеp клавиату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