-4. Текст Программы (1071407)
Текст из файла
12
Московский государственный технический университет им. Н.Э.Баумана
____________________________________________________________________
Утверждаю: | |
Большаков С.А. | "__"_____________2004 г. |
Курсовая работа по системному программированию
“Загрузчик текстового шрифта в память дисплея ”
Текст программы
(вид документа)
писчая бумага
(вид носителя)
12
(количество листов)
ИСПОЛНИТЕЛЬ: | |
студент группы ИУ5-53 | _____________________ |
Цирулёв А.С. | "__"_____________2004 г. |
Москва - 2004
________________________________________________________________
Turbo Assembler Version 2.51 12/01/05 04:51:35 Page 1
font.asm
1 ;--------------------------------------------------------------------
2 ;
3 ; FONT.ASM
4 ; REZIDENTNAIA PROGRAMMA DLIA ZAMENY SHRIFTA
5 ;
6 ;--------------------------------------------------------------------
7
8 .286
9 jumps
10
11 0000 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 ; REZIDENTNAIA CHAST" PROGRAMMY
24 ;
25 ;--------------------------------------------------------------------
26
27 0100 main proc
28 0100 E9 0259 jmp init
29
30 0103 00000000 indos_ptr dd 0
31
32 rstvect macro n,e ;macrokomanda vosstanovlenia vectorov
33
34
35 mov ah,25h
36 mov al,n
37 lds dx,cs:old_&n
38 int 21h
39 endm
40
41
42 ; OBRABOTCHIK MYL"TIPLEKSORNOGO PRERYVANIA
43 0107 8F E0 AE A3 E0 A0 AC+ msg1 db 'Џа®Ја ¬¬ ўлЈа㦥 $'
44 AC A0 20 A2 EB A3 E0+
45 E3 A6 A5 AD A0 20 24
46 011C 00000000 old_2Fh dd 0
47
48 0120 new_2Fh proc
49 0120 80 FC 77 cmp ah,prog_id
50 0123 75 11 90 90 90 jne end_2Fh
51 0128 3C 00 cmp al,0
52 012A 74 0F 90 90 90 je identify
53 012F 3C 01 cmp al,1
54 0131 74 0B 90 90 90 je uninstall
55 0136 end_2Fh:
56 0136 2E: FF 2E 011Cr jmp cs:old_2Fh
57 013B identify:
Turbo Assembler Version 2.51 12/01/05 04:51:35 Page 2
font.asm
58 013B B0 FF mov al,0FFh
59 013D CF iret ;vozvrat iz p/p, vosstanovlenie flagov i registrov cx ip
60 013E uninstall:
61 013E 06 1E 52 push es ds dx
62
63 ;vosstanovlenie vectorov
64 rstvect 09h
1 65 0141 B4 25 mov ah,25h
1 66 0143 B0 09 mov al,09h
1 67 0145 2E: C5 16 01ADr lds dx,cs:old_09h
1 68 014A CD 21 int 21h
69 rstvect 2Fh
1 70 014C B4 25 mov ah,25h
1 71 014E B0 2F mov al,2Fh
1 72 0150 2E: C5 16 011Cr lds dx,cs:old_2Fh
1 73 0155 CD 21 int 21h
74
75 ;vygryzka iz pamiati
76 0157 B4 49 mov ah,49h
77 0159 0E push cs
78 015A 07 pop es
79 015B CD 21 int 21h
80
81 015D BE 0107r mov si, offset cs:msg1
82 0160 8C C8 mov ax, cs
83 0162 8E D8 mov ds, ax
84 0164 E8 0035 call crlf
85 0167 E8 0007 call str_out
86 016A E8 002F call crlf
87
88 016D 5A 1F 07 pop dx ds es
89 0170 CF iret ;vozvrat iz p/p, vosstanovlenie flagov i registrov cx ip
90 0171 new_2Fh endp
91
92 0171 str_out proc
93 0171 60 pusha
94
95 0172 B4 03 mov ah, 03h ; poly4aem poziciu kyrsora(dh -
96 0174 B7 00 mov bh, 0
97 0176 CD 10 int 10h
98
99 0178 next_smbl:
100 0178 B4 0E mov ah, 0Eh ; vyvod simvola
101 017A 8A 04 mov al, byte ptr ds:[si]
102 017C 3C 24 cmp al, '$'
103 017E 74 1A 90 90 90 je fin_str_out
104
105 0183 CD 10 int 10h
106 0185 46 inc si
107
108 0186 FE C2 inc dl
109 0188 80 FA 50 cmp dl, 80
110 018B 7E 07 90 90 90 jng set_cur
111 0190 B2 00 mov dl, 0
112 0192 FE C6 inc dh
113
114 0194 set_cur:
Turbo Assembler Version 2.51 12/01/05 04:51:35 Page 3
font.asm
115 0194 B4 02 mov ah, 02h ; perevod kyrsora (dh - stroka,
116 0196 CD 10 int 10h
117 0198 EB DE jmp next_smbl
118
119 019A fin_str_out:
120 019A 61 popa
121 019B C3 ret
122 019C str_out endp
123
124 019C crlf proc
125 019C 50 push ax
126 019D 53 push bx
127
128 019E B4 0E mov ah, 0Eh
129 01A0 B7 00 mov bh, 0
130 01A2 B0 0D mov al, 0Dh
131 01A4 CD 10 int 10h
132 01A6 B0 0A mov al, 0Ah
133 01A8 CD 10 int 10h
134
135 01AA 5B pop bx
136 01AB 58 pop ax
137 01AC C3 ret
138 01AD crlf endp
139
140 ; OBRABOTCHIK PRERYVANIA KLAVIATYRY
141
142 01AD 00000000 old_09h dd 0
143 01B1 0000 ctrl_flag dw 0
144 01B3 0000 key_func dw 0
145
146 01B5 new_09h proc
147 ; polu4enie skan-koda klavishi
148 01B5 50 push ax
149 01B6 E4 60 in al,60h
150 01B8 3C 57 cmp al,hotkey_code
151 01BA 74 30 90 90 90 je hotkey
152 01BF 3C 1D cmp al,ctrl_code
153 01C1 74 17 90 90 90 je ctrl
154 01C6 3C 9D cmp al,ctrlr_code
155 01C8 74 19 90 90 90 je ctrlr
156 01CD 3C 16 cmp al,u_code
157 01CF 74 25 90 90 90 je uninst
158 01D4 call_old:
159 01D4 58 pop ax
160 01D5 2E: FF 2E 01ADr jmp cs:old_09h
161 01DA 2E: C7 06 01B1r 0001 ctrl: mov ctrl_flag,1
162 01E1 EB F1 jmp call_old
163 01E3 2E: C7 06 01B1r 0000 ctrlr:mov ctrl_flag,0
164 01EA EB E8 jmp call_old
165 01EC hotkey:
166 01EC 2E: C7 06 01B3r 0000 mov key_func,0
167 01F3 EB 13 90 jmp key_end
168 01F6 uninst:
169 01F6 2E: 83 3E 01B1r 01 cmp ctrl_flag,1
170 01FC 75 D6 jne call_old
171 01FE 2E: C7 06 01B3r 0001 mov key_func,1
Turbo Assembler Version 2.51 12/01/05 04:51:35 Page 4
font.asm
172 0205 EB 01 90 jmp key_end
173 0208 key_end:
174 ; zaglatyvanie v port
175 0208 E4 61 in al,61h
176 020A 8A E0 mov ah,al
177 020C 0C 80 or al,80h
178 020E E6 61 out 61h,al
179 0210 86 E0 xchg ah,al
180 0212 E6 61 out 61h,al
181
182 ; vozvrat EOI
183 0214 B0 20 mov al,20h
184 0216 E6 20 out 20h,al
185
186 0218 2E: 83 3E 01B3r 00 cmp key_func,0
187 021E 74 0C 90 90 90 je swap_func
188
189 ; vozvrat parametrov
190 0223 B4 77 mov ah,prog_id
191 0225 B0 01 mov al,1
192 0227 CD 2F int 2Fh
193 0229 EB 04 90 jmp uninst_func
194 022C swap_func:
195 022C E8 00A3 call SwapChars
196 022F uninst_func:
197 022F 58 pop ax
198 0230 CF iret
199 0231 new_09h endp
200
201 0231 00 flag db 0 ; 0=>1-i zapysk; 1=>gryzit' novyi shrift; 2=>staryi
202 0232 50*(00) oldchar db 80 dup(0) ; byfer dlia starogo shrifta
203
204 ;novyi shrift dlia bykv ЂЃ‚ѓ„
205 0282 00 newchar db 00000000b
206 0283 FF db 11111111b
207 0284 FF db 11111111b
208 0285 FF db 11111111b
209 0286 FF db 11111111b
210 0287 FF db 11111111b
211 0288 42 db 01000010b
212 0289 7E db 01111110b
213 028A 42 db 01000010b
214 028B 5A db 01011010b
215 028C 42 db 01000010b
216 028D 00 db 00000000b
217 028E FF db 11111111b
218 028F 00 db 00000000b
219 0290 00 db 00000000b
220 0291 00 db 00000000b
221 ; Ѓ
222 0292 00 db 00000000b
223 0293 00 db 00000000b
224 0294 00 db 00000000b
225 0295 7E db 01111110b
226 0296 40 db 01000000b
227 0297 40 db 01000000b
228 0298 7C db 01111100b
Turbo Assembler Version 2.51 12/01/05 04:51:35 Page 5
font.asm
229 0299 42 db 01000010b
230 029A 42 db 01000010b
231 029B 42 db 01000010b
232 029C 7C db 01111100b
233 029D 00 db 00000000b
234 029E FF db 11111111b
235 029F 00 db 00000000b
236 02A0 00 db 00000000b
237 02A1 00 db 00000000b
238 ; ‚
239 02A2 FF db 11111111b
240 02A3 FF db 11111111b
241 02A4 FF db 11111111b
242 02A5 FF db 11111111b
243 02A6 FF db 11111111b
244 02A7 52 db 01010010b
245 02A8 7C db 01111100b
246 02A9 52 db 01010010b
247 02AA 52 db 01010010b
248 02AB 52 db 01010010b
249 02AC 7C db 01111100b
250 02AD 00 db 00000000b
251 02AE FF db 11111111b
252 02AF 00 db 00000000b
253 02B0 00 db 00000000b
254 02B1 00 db 00000000b
255 ; ѓ
256 02B2 00 db 00000000b
257 02B3 00 db 00000000b
258 02B4 00 db 00000000b
259 02B5 7E db 01111110b
260 02B6 40 db 01000000b
261 02B7 40 db 01000000b
262 02B8 40 db 01000000b
263 02B9 40 db 01000000b
264 02BA 40 db 01000000b
265 02BB 40 db 01000000b
266 02BC 40 db 01000000b
267 02BD 00 db 00000000b
268 02BE FF db 11111111b
269 02BF 00 db 00000000b
270 02C0 00 db 00000000b
271 02C1 00 db 00000000b
272 ; „
273 02C2 00 db 00000000b
274 02C3 00 db 00000000b
275 02C4 00 db 00000000b
276 02C5 3E db 00111110b
277 02C6 42 db 01000010b
278 02C7 42 db 01000010b
279 02C8 42 db 01000010b
280 02C9 42 db 01000010b
281 02CA 42 db 01000010b
282 02CB FF db 11111111b
283 02CC 81 db 10000001b
284 02CD 00 db 00000000b
285 02CE FF db 11111111b
Turbo Assembler Version 2.51 12/01/05 04:51:35 Page 6
font.asm
286 02CF 00 db 00000000b
287 02D0 00 db 00000000b
288 02D1 00 db 00000000b
289
290
291 02D2 SwapChars proc
292 02D2 60 pusha
293 02D3 06 push ES
294 02D4 2E: 80 3E 0231r 01 cmp flag,1
295 02DA 74 2A 90 90 90 je LoadNew
296 02DF 2E: 80 3E 0231r 02 cmp flag,2
297 02E5 74 4A 90 90 90 je LoadOld
298 02EA 1E push DS
299 02EB B8 1130 mov AX,1130h ; poly4aem adres starogo shrifta
300 02EE B7 01 mov BH, 01h
301 02F0 CD 10 int 10h
302 ; ES:BP - adres starogo shrifta
303 02F2 1E 06 push DS ES
304 02F4 1F 07 pop DS ES
305 02F6 8B F5 mov SI,BP
306 02F8 81 C6 0800 add SI,'Ђ'*16 ; na4al'nyi simvol
307 02FC BF 0232r mov DI,offset oldchar
308 02FF FC cld
309 0300 B9 0050 mov CX,16*5
310 0303 F3> A4 rep movsb
311 0305 1F pop DS
312 0306 LoadNew:
313 0306 B8 B800 mov AX,0B800h
314 0309 8E C0 mov ES, AX
315 030B 26: C7 06 0000 0F07 mov ES:0,0F07h
316 0312 8C C8 mov AX, CS ; ES:=CS
317 0314 8E C0 mov ES, AX
318 0316 B8 1110 mov AX, 1110h
319 0319 B7 10 mov BH,16 ; vysota simvola
320 031B B3 00 mov BL,0 ; gluk znakogeneratora
321 031D B9 0005 mov CX,5 ; koli4estvo simvolov
322 0320 BA 0080 mov DX,'Ђ'
323 0323 BD 0282r mov BP, offset newchar
324 0326 CD 10 int 10h
325 0328 2E: C6 06 0231r 02 mov flag,2 ; sledyuwii raz nado bydet zagrygat' staryi wrift
326 032E EB 29 90 jmp Fin
327
328 0331 LoadOld:
329 0331 B8 B800 mov AX,0B800h
330 0334 8E C0 mov ES, AX
331 0336 26: C7 06 0000 0F09 mov ES:0,0F09h
332 033D 8C C8 mov AX, CS ; ES:=CS
333 033F 8E C0 mov ES, AX
334
335 0341 B8 1110 mov AX, 1110h
336 0344 B7 0E mov BH,14
337 0346 B3 00 mov BL,0
338 0348 B9 0005 mov CX,5
339 034B BA 0080 mov DX,'Ђ'
340 034E BD 0232r mov BP, offset oldchar
341 0351 CD 10 int 10h
342 0353 2E: C6 06 0231r 01 mov flag,1 ; sledyuwii raz nado bydet zagrygat' novyi wrift
Turbo Assembler Version 2.51 12/01/05 04:51:35 Page 7
font.asm
343
344 0359 Fin:
345 0359 07 pop ES
346 035A 61 popa
347 035B C3 ret
348 035C SwapChars endp
349
350 = TEXT:035C end_tsr=$
351 035C main endp
352
353 ;--------------------------------------------------------------------
354 ;
355 ; OBLAST" INICIALIZACII
356 ;
357 ;--------------------------------------------------------------------
358
359 ; procedyra ystanovki i sovranenia vectora
360
361 setvect macro n ;macroprogramma ystanovki vectorov
362
363 mov ah,35h
Характеристики
Тип файла документ
Документы такого типа открываются такими программами, как Microsoft Office Word на компьютерах Windows, Apple Pages на компьютерах Mac, Open Office - бесплатная альтернатива на различных платформах, в том числе Linux. Наиболее простым и современным решением будут Google документы, так как открываются онлайн без скачивания прямо в браузере на любой платформе. Существуют российские качественные аналоги, например от Яндекса.
Будьте внимательны на мобильных устройствах, так как там используются упрощённый функционал даже в официальном приложении от Microsoft, поэтому для просмотра скачивайте PDF-версию. А если нужно редактировать файл, то используйте оригинальный файл.
Файлы такого типа обычно разбиты на страницы, а текст может быть форматированным (жирный, курсив, выбор шрифта, таблицы и т.п.), а также в него можно добавлять изображения. Формат идеально подходит для рефератов, докладов и РПЗ курсовых проектов, которые необходимо распечатать. Кстати перед печатью также сохраняйте файл в PDF, так как принтер может начудить со шрифтами.