[СП - ДЗ] 4 - Исходный текст программ программного продукта (1071359), страница 2
Текст из файла (страница 2)
251 0301 CD 21 int 21h
252 0303 B8 2513 mov AX,2513h
253 0306 BA 01A0r mov DX,offset new_13h
254 0309 CD 21 int 21h
255 030B B8 250E mov AX,250Eh
256 030E BA 01B1r mov DX,offset new_0Eh
257 0311 CD 21 int 21h
258 0313 B4 09 mov AH,09h
259 0315 BA 04E8r mov DX,offset jstinst
260 0318 CD 21 int 21h
261 031A B8 3100 mov AX,3100h ; завершиться и остаться в памяти
262 031D BA 0022 mov DX,(init-begin+10Fh)/16 ; вот таким количеством параграфов
263 0320 CD 21 int 21h
264 0322 init endp
265 ; -----------------------------------------------------------------------------
266 0322 CLRF proc ; переход на новую строку
267 0322 B4 02 mov AH,02h
268 0324 B2 0A mov DL,10 ; символ перехода на новую строку
269 0326 CD 21 int 21h
270 0328 B2 0D mov DL,13 ; символ возврата каретки
271 032A CD 21 int 21h
272 032C C3 RET
273 032D CLRF endp
274 ; -----------------------------------------------------------------------------
275 032D print proc ; вывод строки, пишем вот такой
276 032D 57 push DI ; потому что во время прерывания
277 032E 50 push AX ; нельзя пользоваться функциями DOS
278 032F 51 push CX ; пример из методички
279 0330 52 push DX
280 0331 53 push BX
281 0332 8B FA mov DI,DX
282 0334 B4 03 mov AH,03h ; возиция курсора в начале
283 0336 B7 00 mov BH,00h
284 0338 CD 10 int 10h
285 033A B9 0046 mov CX,70 ; число повторов, возьмём с запасом
Turbo Assembler Version 2.0 16/12/10 17:29:26 Page 6
kp.ASM
286 033D 8A 05 crcl: mov AL,DS:[DI] ; цикл вывода и проверки символов строки
287 033F 3C 24 cmp AL,'$' ; rонец строки для вывода?
288 0341 74 16 je fin ; да - закончим
289 0343 47 inc DI ; вывод символа на экран
290 0344 B7 00 mov BH,0
291 0346 B4 0A mov AH,0Ah
292 0348 51 push CX
293 0349 B9 0001 mov CX,0001h
294 034C CD 10 int 10h
295 034E 59 pop CX
296 034F B4 02 mov AH,02h ; новая позиция курсора
297 0351 FE C2 inc DL
298 0353 B7 00 mov BH,00h
299 0355 CD 10 int 10h
300 0357 EB E4 JMP crcl
301 0359 5B fin: pop BX
302 035A 5A pop DX
303 035B 59 pop CX
304 035C 58 pop AX
305 035D 5F pop DI
306 035E C3 RET
307 035F print endp
308 ; -----------------------------------------------------------------------------
309 035F 2D 3D 20 68 65 6C 6C+ greet db '-= hello! This programm protects floppy-drive fron unauthorizes access =-$'
310 6F 21 20 54 68 69 73+
311 20 70 72 6F 67 72 61+
312 6D 6D 20 70 72 6F 74+
313 65 63 74 73 20 66 6C+
314 6F 70 70 79 2D 64 72+
315 69 76 65 20 66 72 6F+
316 6E 20 75 6E 61 75 74+
317 68 6F 72 69 7A 65 73+
318 20 61 63 63 65 73 73+
319 20 3D 2D 24
320 03A9 4F 6E 2F 6F 66 66 20+ help1 db 'On/off secure-mode provided by key F5$'
321 73 65 63 75 72 65 2D+
322 6D 6F 64 65 20 70 72+
323 6F 76 69 64 65 64 20+
324 62 79 20 6B 65 79 20+
325 46 35 24
326 03CF 2A 20 77 68 65 6E 20+ help2 db '* when secure-mode is activated message ON appears$'
327 73 65 63 75 72 65 2D+
328 6D 6F 64 65 20 69 73+
329 20 61 63 74 69 76 61+
330 74 65 64 20 6D 65 73+
331 73 61 67 65 20 4F 4E+
332 20 61 70 70 65 61 72+
333 73 24
334 0402 2A 20 77 68 65 6E 20+ help3 db '* when secure-mode is deactivated message OFF appears$'
335 73 65 63 75 72 65 2D+
336 6D 6F 64 65 20 69 73+
337 20 64 65 61 63 74 69+
338 76 61 74 65 64 20 6D+
339 65 73 73 61 67 65 20+
340 4F 46 46 20 61 70 70+
341 65 61 72 73 24
342 0438 54 6F 20 75 6E 6C 6F+ help4 db 'To unload resident use programm UNLDTSR.EXE$'
Turbo Assembler Version 2.0 16/12/10 17:29:26 Page 7
kp.ASM
343 61 64 20 72 65 73 69+
344 64 65 6E 74 20 75 73+
345 65 20 70 72 6F 67 72+
346 61 6D 6D 20 55 4E 4C+
347 44 54 53 52 2E 45 58+
348 45 24
349 0464 2D 3D 20 63 72 65 61+ help5 db '-= created by Sidyakin Artem, IU5-59, 2010 =-$'
350 74 65 64 20 62 79 20+
351 53 69 64 79 61 6B 69+
352 6E 20 41 72 74 65 6D+
353 2C 20 49 55 35 2D 35+
354 39 2C 20 32 30 31 30+
355 20 3D 2D 24
356 0492 52 65 73 69 64 65 6E+ info1 db 'Resident is loading now. Please wait...$'
357 74 20 69 73 20 6C 6F+
358 61 64 69 6E 67 20 6E+
359 6F 77 2E 20 50 6C 65+
360 61 73 65 20 77 61 69+
361 74 2E 2E 2E 24
362 04BA 20 4F 4B 21 24 info2 db ' OK!$'
363 04BF 43 61 6E 63 65 6C 6C+ alrinst db 'Cancelled! Resident is ALREADY installed$'
364 65 64 21 20 52 65 73+
365 69 64 65 6E 74 20 69+
366 73 20 41 4C 52 45 41+
367 44 59 20 69 6E 73 74+
368 61 6C 6C 65 64 24
369 04E8 52 65 73 69 64 65 6E+ jstinst db 'Resident has been successfully INSTALLED$'
370 74 20 68 61 73 20 62+
371 65 65 6E 20 73 75 63+
372 63 65 73 73 66 75 6C+
373 6C 79 20 49 4E 53 54+
374 41 4C 4C 45 44 24
375 0511 14*(23) dest db 20 dup ('#')
376 0525 2F 3F par db '/?'
377 0527 00 hlp db 0
378 ; -----------------------------------------------------------------------------
379 0528 prgr ends ; конец сегмента команд
380 ; -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
381 end begin ; конец текста программы, установка точки входа
Turbo Assembler Version 2.0 16/12/10 17:29:26 Page 8
Symbol Table
Symbol Name Type Value
??DATE Text "16/12/10"
??FILENAME Text "kp "
??TIME Text "17:29:26"
??VERSION Number 0200
@CPU Text 0101H
@CURSEG Text PRGR
@FILENAME Text KP
@WORDSIZE Text 2
ALRINST Byte PRGR:04BF
BEGIN Near PRGR:0100
BLOCK Byte PRGR:0114
CLRF Near PRGR:0322
CRCL Near PRGR:033D
DEST Byte PRGR:0511
DONE Near PRGR:019C
ENH Near PRGR:0154
FIN Near PRGR:0359
GREET Byte PRGR:035F
HELP1 Byte PRGR:03A9
HELP2 Byte PRGR:03CF
HELP3 Byte PRGR:0402
HELP4 Byte PRGR:0438
HELP5 Byte PRGR:0464
HLP Byte PRGR:0527
IAMHR Near PRGR:01D4
INFO1 Byte PRGR:0492
INFO2 Byte PRGR:04BA
INIT Near PRGR:021F
INST Near PRGR:02A1
JSTINST Byte PRGR:04E8
NEW_09H Near PRGR:012D
NEW_0EH Near PRGR:01B1
NEW_13H Near PRGR:01A0
NEW_2FH Near PRGR:01C2
NREAD Near PRGR:014E
OFF Near PRGR:0187
OLD_09H Dword PRGR:0103
OLD_0EH Dword PRGR:010F
OLD_13H Dword PRGR:010B
OLD_2FH Dword PRGR:0107
ON Near PRGR:017F
OUT_2FH Near PRGR:01CF
PAR Byte PRGR:0525
PRINT Near PRGR:032D
PRNT Near PRGR:0166
QUI Near PRGR:029C
SECUR Byte PRGR:0113
UNBL Near PRGR:01BD
UNBLCK Near PRGR:01AC
UNBLOCK Byte PRGR:0120
UNINST Near PRGR:01D7
WTOP Near PRGR:028C
Turbo Assembler Version 2.0 16/12/10 17:29:26 Page 9
Symbol Table
Groups & Segments Bit Size Align Combine Class
PRGR 16 0528 Para none