Читайте данную работу прямо на сайте или скачайте

Скачайте в формате документа WORD


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

           

           

1.


Обработка


1.2 ОБРАБОТКА

Обработка 10


ЗАКЛЮЧЕНИЕ

        

        

        

        

Неоспоримое достоинство программы

БИБЛИОГРАФИЧЕСКЙа

1. 

программирования М.: Высшая школа, 1992. 447с.

2. 

.MODEL TINY

.CODE

.STARTUP

.286

LOCALS

JUMPS

jmp Install

RSHIFT_SCAN

FLAGS recordа

iFlags FLAGS <0, 0, 0, 0>

STableа

Hook09 proc far ;обpабока int 09h

push ax

push bx

push cx

push di

push ds

push es

movа

movа

in

movа

cmpа

je

test al,80h

jnzа

test [iFlags], MASK inRussian ; выделяем флаг русского набора

jz

push ax

movа

movа

popа

cmpа

jg

cmpа

jl

subа

addа

jmpа

check2:

cmpа

jg

cmpа

jl

subа

addа

jmpа

check3:

cmpа

jg

cmpа

jl

subа

Translate:

or

movа

test ah,11b

jz

addа

lowerKey:

movа

movа

cmpа

je

incа

incа

cmpа

je

jmpа

h_End:

cmpа

je

insSymb:

movа

movа

addа

movа

movа

cmpа

jneа

movа

nextStep:

incа

incа

movа

jmpа

gotShift:

or

andа

jmpа

KeyUp:

andа

cmpа

jneа

test [iFlags], MASK keyPressed

jnzа

test [iFlags], MASK inRussian

jz

andа

jmpа

switchRussian:

or

jmpа

throwShift:

andа

OldHook09:

popа

popа

popа

popа

popа

popа

db

OldHandler09 dd ?

Quit:

in

movа

or

outа

xchg ah,al

outа

movа

outа

popа

popа

popа

popа

popа

popа

iret

Hook09 endp

Hook10 proc far

cmp ah,00h

jne @@Quit

cmp al,2

jeа

cmp al,3

jne @@Quit

@@myHook:

call iBIOS

push ax

push cx

push ds

push si

movа

movа

movа

movа

movа

movа

call LoadFont

pop si

pop ds

pop cx

pop ax

iret

@@Quit:

call iBIOS

iret

Hook10 endp

iBIOS proc

pushf

db 09Ah

OldHandler10 dd ?

ret

iBIOS endp

;┌────────────────────────────────────────┐

;│

;│

;

;

;

;│ Вход:

;│ Выход: нет

;│ Разpушаемые pегистpы: нет

;└────────────────────────────────────────┘

LoadFont proc

pushf

push ax

push cx

push dx

push si

push di

push es

movа

movа

xorа

imul di,ax,20h а

push ds

push si

movа

movа

leaа

push cx

call SetMode

pop cx

pop si

pop ds

mov dl,ch

xor ch,ch

xor dh,dh

@@All_symbols:

push cx

movа

movа

shrа

repа

movа

addа

popа

loop @@All_symbols

leaа

call SetMode

pop es

pop di

pop si

pop dx

pop cx

pop ax

popf

ret

WRITE_ONа

db 4,7

db 4,2

db 5,0

db 6,4

WRITE_OFF db 2,3

db 4,3

db 4,0

db 5,10h

db 6

DispTypeа

LoadFont endp

SetMode proc

xor cx,cx

movа

movа

call @@Outport ; знакогенератор пользователя в памяти

movа

movа

@@Outport:

rep outsw

retn

SetMode endp

SetDisplayType proc

push ax

push es

xorа

movа

test al,2

jz

movа

movа

@@Exit:

pop es

pop ax

ret

SetDisplayType endp

NewFont db 16*256 dup(0)

END_TSR:

FileNameа

ErrorMsg

Install:

mov ax,3D00h

mov dx,offset FileName

int 21h

jcа

mov bx,ax

mov cx,4096

mov dx,offset NewFont

mov ah,3Fh

int 21h

mov ah,3Eh

int 21h

mov al,0

mov cl,0FFh

mov ch,16

mov si,offset NewFont

call LoadFont

mov ax,3509h

int 21h

mov word ptr [OldHandler09],bx

mov word ptr [OldHandler09+2],es ; вектоp int 09

mov dx,offset Hook09

mov ax,2509h

int 21h

mov ax,3510h

int 21h

mov word ptr [OldHandler10],bx

mov word ptr [OldHandler10+2],es

mov dx,offset Hook10

mov ax,2510h

int 21h

mov dx,offset END_TSR

int 27h

errorExit:

mov ah,09

mov dx,offset ErrorMsg

int 21h

mov ax,4C01h

int 21h

END