Курсовая работа: КП - сохранение содержимого экрана
Описание
Характеристики курсовой работы
Список файлов
- КП - сохранение содержимого экрана
- GRABER
- DEMO.EXE 8,97 Kb
- GRABER.ASM 6,49 Kb
- GRABER.COM 1,75 Kb
- GRABER.OBJ 1,3 Kb
- GRABER.TXT 23,01 Kb
- Прочти меня.txt 32 b
Turbo Assembler Version 4.0 24/11/98 23:55:35 Page 1
graber.asm
1 ;--------------------------------------- -----------------------------
2 ;
3 ; GRAB.ASM
4 ; РЕЗИДЕНТНАЯ ПРОГРАММА ДЛЯ СОХРАНЕНИЯ ГРАФИЧЕСКОГО ЭКРАНА
5 ;
6 ;--------------------------------------- -----------------------------
7
8 .286
9 jumps
10
110000 text segment
12 assume cs:text
13 org 100h
14
15 =0077 prog_id equ 77h
16 =0057 hotkey_code equ 57h
17 =001D ctrl_code equ 1Dh
18 =009D ctrlr_code equ 9Dh
19 =0016 u_code equ 16h
20
21 ;--------------------------------------- -----------------------------
22 ;
23 ; РЕЗИДЕНТНАЯ ЧАСТЬ ПРОГРАММЫ
24 ;
25 ;--------------------------------------- -----------------------------
26
270100 main proc
280100 E9 055B jmp init
29
300103 00000000 indos_ptr dd 0
31
32 rstvect macro n,e
33
34 ; восстановим вектор
35 mov ah,25h
36 mov al,n
37 lds dx,cs:old_&n
38 int 21h
39 endm
40
41
42 ; ОБРАБОТЧИК МУЛЬТИПЛЕКСНОГО ПРЕРЫВАНИЯ
43
440107 00000000 old_2Fh dd 0
45
46010B new_2Fh proc
47010B 80 FC 77 cmp ah,prog_id
48010E 75 11 90 90 90 jne end_2Fh
490113 3C 00 cmp al,0
500115 74 0F 90 90 90 je identify
51011A 3C 01 cmp al,1
52011C 74 0B 90 90 90 je uninstall
530121 end_2Fh:
540121 2E: FF 2E0107r jmp cs:old_2Fh
55
560126 identify:
570126 B0 FF mov al,0FFh
Turbo Assembler Version 4.0 24/11/98 23:55:35 Page 2
graber.asm
580128 CF iret
59
600129 uninstall:
610129 06 1E 52 push esds dx
62
63 ; востановим вектора прерываний
64 rstvect 09h
1 65012C B4 25 mov ah,25h
1 66012E B0 09 mov al,09h
1 670130 2E: C5 16014Cr lds dx,cs:old_09h
1 680135 CD 21 int 21h
69 rstvect 2Fh
1 700137 B4 25 mov ah,25h
1 710139 B0 2F mov al,2Fh
1 72013B 2E: C5 160107r lds dx,cs:old_2Fh
1 730140 CD 21 int 21h
74
75 ; выгрузимпрограмму
760142 B4 49 mov ah,49h
770144 0E push cs
780145 07 pop es
790146 CD 21 int 21h
80
810148 5A 1F 07 pop dxds es
82014B CF iret
83014C new_2Fh endp
84
85
86
87 ; ОБРАБОТЧИК ПРЕРЫВАНИЯ КЛАВИАТУРЫ
88
89014C 00000000 old_09h dd 0
900150 0000 ctrl_flag dw 0
910152 0000 key_func dw 0
92
930154 new_09h proc
94
95 ; проверимнажатуюклавишу
960154 50 push ax
970155 E4 60 in al,60h
980157 3C 57 cmp al,hotkey_code
990159 74 30 90 90 90 je hotkey
100015E 3C 1D cmp al,ctrl_code
1010160 74 17 90 90 90 je ctrl
1020165 3C 9D cmp al,ctrlr_code
1030167 74 19 90 90 90 je ctrlr
104016C 3C 16 cmp al,u_code
105016E 74 25 90 90 90 je uninst
1060173 call_old:
1070173 58 pop ax
1080174 2E: FF 2E014Cr jmp cs:old_09h
109
1100179 2E: C7 060150r 0001 ctrl: mov ctrl_flag,1
1110180 EB F1 jmp call_old
1120182 2E: C7 060150r 0000 ctrlr: mov ctrl_flag,0
1130189 EB E8 jmp call_old
114
Turbo Assembler Version 4.0 24/11/98 23:55:35 Page 3
graber.asm
115018B hotkey:
116018B 2E: C7 060152r 0000 mov key_func,0
1170192 EB 13 90 jmp key_end
118
1190195 uninst:
1200195 2E: 83 3E0150r 01 cmp ctrl_flag,1
121019B 75 D6 jne call_old
122019D 2E: C7 060152r 0001 mov key_func,1
12301A4 EB 01 90 jmp key_end
124
12501A7 key_end:
126 ; разрешимработу клавиатуры
12701A7 E4 61 in al,61h
12801A9 8A E0 mov ah,al
12901AB 0C 80 or al,80h
13001AD E6 61 out 61h,al
13101AF 86 E0 xchg ah,al
13201B1 E6 61 out 61h,al
133
134 ; пошлем вконтроллер прерываний команду EOI
13501B3 B0 20 mov al,20h
13601B5 E6 20 out 20h,al
137
13801B7 2E: 83 3E0152r 00 cmp key_func,0
13901BD 74 0C 90 90 90 je grab_func
140
141 ; выгрузимпрограмму
14201C2 B4 77 mov ah,prog_id
14301C4 B0 01 mov al,1
14401C6 CD 2F int 2Fh
14501C8 EB 04 90 jmp uninst_func
146
14701CB grab_func:
148 ; сохраняем экран
14901CB E8 0008 call acttsr
150
15101CE uninst_func:
15201CE 58 pop ax
15301CF CF iret
15401D0 new_09h endp
155
156
157
158 ; АКТИВАЦИЯ TSR
159
16001D0 0000 old_psp dw 0
16101D2 00000000 old_dta dd 0
162
16301D6 acttsr proc
16401D6 50 53 52 06 1E push axbx dx es ds
165
16601DB 2E: C4 1E0103r les bx,indos_ptr
16701E0 26: 80 3F00 cmp byte ptr es:[bx],0
16801E4 75 43 90 90 90 jne no_activate
169
17001E9 B4 62 mov ah,62h
17101EB CD 21 int 21h
Turbo Assembler Version 4.0 24/11/98 23:55:35 Page 4
graber.asm
17201ED 2E: 89 1E01D0r mov old_psp,bx
17301F2 B4 50 mov ah,50h
17401F4 8C CB mov bx,cs
17501F6 CD 21 int 21h
176
17701F8 B4 2F mov ah,2Fh
17801FA CD 21 int 21h
17901FC 2E: 89 1E01D2r mov word ptr [old_dta],bx
1800201 2E: 8C 0601D4r mov word ptr [old_dta+2],es
1810206 B4 1A mov ah,1Ah
1820208 0E push cs
1830209 1F pop ds
184020A BA 0080 mov dx,80h
185020D CD 21 int 21h
186
187020F E8 03CC call grab
188
1890212 B4 1A mov ah,1Ah
1900214 2E: 8B 1601D2r mov dx,word ptr [old_dta]
1910219 2E: 8E 1E01D4r mov ds,word ptr [old_dta+2]
192021E CD 21 int 21h
1930220 B4 50 mov ah,50h
1940222 2E: 8B 1E01D0r mov bx,old_psp
1950227 CD 21 int 21h
196
1970229 no_activate:
1980229 1F 07 5A 5B 58 pop dses dx bx ax
199022E C3 ret
200022F acttsr endp
201
202
203
204 ; ПРОЦЕДУРА ПОЛУЧЕНИЯ ПАЛИТРЫ (ПО АДРЕСУ ES:DI 768БАЙТ)
205
206022F getpal proc
207022F 50 51 52 57 push axcx dx di
208
2090233 BA 03C7 mov dx,3C7h
Файл скачан с сайта StudIzba.com
Начать зарабатывать