4Исходный текст (КП - будильник), страница 2
Описание файла
Файл "4Исходный текст" внутри архива находится в следующих папках: КП - будильник, кулаковы. Документ из архива "КП - будильник", который расположен в категории "". Всё это находится в предмете "системное программирование" из 5 семестр, которые можно найти в файловом архиве МГТУ им. Н.Э.Баумана. Не смотря на прямую связь этого архива с МГТУ им. Н.Э.Баумана, его также можно найти и в других разделах. Архив можно найти в разделе "курсовые/домашние работы", в предмете "системное программирование" в общих файлах.
Онлайн просмотр документа "4Исходный текст"
Текст 2 страницы из документа "4Исходный текст"
301 0429 C0 EC 04 shr AH,4
302 042C 0D 3030 or AX,3030h
303 042F C3 ret
304 0430 bcd2asc endp
305
306 ;-------------------------------------------------
307 ;Процедура обработчика проверки наличия в резидента +
308 в ОП
309 ;ВХОД: AH-признак пользовательской функции (0xFF)
310 ; AL-опция (0x00-проверка наличия, +
311 0x01-выгрузка)
312 ;ВЫХОД: AL-результат (0xAA-загружена)
Turbo Assembler Version 4.1 14/12/06 21:11:55 Page 7
alrmclck.ASM
313 ;-------------------------------------------------
314 0430 new_2F proc
315 ;---------------Проверка признака пользовательской +
316 функции
317 0430 80 FC FF cmp AH, 0FFH
318 0433 74 05 je my_func
319 0435 2E: FF 2E 011Dr jmp CS:old_2F
320 ;---------------Анализ входящей опции-------------
321 043A my_func:
322 043A 3C 00 cmp AL, 00H
323 043C 74 09 je loaded
324
325 043E 3C 01 cmp AL, 01H
326 0440 74 08 je uninst
327
328 0442 2E: FF 2E 011Dr jmp CS:old_2F
329
330 0447 loaded:
331 0447 B0 AA mov AL, 0AAH
332 0449 CF iret
333 ;---------------Выгрузка программы из ОП и--------
334 ;---------------восстановление обработчиков прерваний
335 044A uninst:
336 044A 1E push DS
337 044B 06 push ES
338 ;---------------Скрытие будильника и часов с экрана
339 044C 0E push CS
340 044D 1F pop DS
341 044E B9 000A mov CX,alarm_1
342 0451 68 B800 push 0B800h
343 0454 07 pop ES
344 0455 8B 3E 02DCr mov DI,word ptr start_position
345 0459 BE 02E1r mov SI,offset clear_line
346 045C B4 0F mov AH,0fh
347 045E next3:
348 045E AC lodsb
349 045F AB stosw
350 0460 E2 FC loop next3
351
352 0462 B9 000A mov CX,output_line_1
353 0465 68 B800 push 0B800h
354 0468 07 pop ES
355 0469 8B 3E 0117r mov DI,word ptr alarm_position
356 046D BE 02E1r mov SI,offset clear_line
357 0470 B4 0F mov AH,0fh
358 0472 next4:
359 0472 AC lodsb
360 0473 AB stosw
361 0474 E2 FC loop next4
362
363 0476 B8 252F mov AX, 252Fh
364 0479 2E: C5 16 011Dr lds DX, CS:old_2F
Turbo Assembler Version 4.1 14/12/06 21:11:55 Page 8
alrmclck.ASM
365 047E CD 21 int 21H
366
367 0480 B8 2509 mov AX, 2509h
368 0483 2E: C5 16 0121r lds DX, CS:old_09
369 0488 CD 21 int 21H
370
371 048A B8 2508 mov AX, 2508h
372 048D 2E: C5 16 0119r lds DX ,CS:old_08
373 0492 CD 21 int 21h
374
375 0494 2E: 8E 06 002C mov ES, CS:2CH
376 0499 B4 49 mov AH, 49H
377 049B CD 21 int 21H
378
379 049D 0E push CS
380 049E 07 pop ES
381 049F B4 49 mov AH, 49H
382 04A1 CD 21 int 21H
383
384 04A3 07 pop ES
385 04A4 1F pop DS
386 04A5 B0 AA mov AL, 0AAH
387 04A7 CF iret
388 04A8 new_2F endp
389
390 ;-------------------------------------------------
391 ;Процедура вывода строки на экран
392 ;ВХОД: DX - адрес строки
393 ;ВЫХОД: нет
394 ;-------------------------------------------------
395 04A8 STR_OUT proc
396 04A8 50 push AX
397 04A9 B4 09 mov AH,09h
398 04AB CD 21 int 21h
399 04AD 58 pop AX
400 04AE C3 ret
401 04AF STR_OUT endp
402
403 ;-------------------------------------------------
404 ;Процедура проверки параметра командной строки
405 ;ВХОД: нет
406 ;ВЫХОД: нет
407 ;-------------------------------------------------
408 04AF HELP proc
409 ;---------------Проверка наличия параметров-------
410 04AF BB 0080 mov BX, 80h
411 04B2 8A 17 mov DL,[BX]
412 04B4 8A CA MOV CL,DL
413 04B6 80 F9 00 CMP CL,0
414 04B9 74 21 je ext
415
416 04BB 43 inc BX
Turbo Assembler Version 4.1 14/12/06 21:11:55 Page 9
alrmclck.ASM
417 04BC 43 inc BX
418 ;---------------Проверка на вызов справки (/?)----
419 04BD 8A 17 mov DL,[BX]
420 04BF 43 inc BX
421 04C0 80 FA 2F cmp DL,'/'
422 04C3 75 11 jne errp
423
424 04C5 8A 17 MOV DL,[BX]
425 04C7 43 inc BX
426 04C8 80 FA 3F CMP DL,'?'
427 04CB 75 09 jne errp
428
429 04CD BA 0167r mov DX,offset mess_help
430 04D0 E8 FFD5 call STR_OUT
431 04D3 EB 07 90 jmp ext
432
433 04D6 errp:
434 04D6 BA 02C2r mov DX,offset error_param
435 04D9 E8 FFCC call STR_OUT
436 04DC ext:
437 04DC C3 ret
438 04DD HELP endp
439
440 ;-------------------------------------------------
441 ;Процедура выдачи звукового сигнала
442 ;ВХОД: нет
443 ;ВЫХОД: нет
444 ;-------------------------------------------------
445 04DD BEEP proc
446
447
448 ;---------------Интервал воспроизведения звука----
449 04DD FE 06 02E0r inc sound
450 04E1 80 3E 02E0r 05 cmp sound,5
451 04E6 75 28 jne no_s
452
453 ;---------------Включение динамика----------------
454 04E8 E4 61 in AL,61h
455 04EA 0C 03 or AL,3
456 04EC E6 61 out 61h,AL
457 ;---------------Канал 2, режим 3------------------
458 04EE B0 B6 mov AL,10110110b
459 04F0 E6 43 out 43h ,AL
460
461 ;---------------Установка делителя частоты--------
462 04F2 B8 0A91 mov AX,2705
463 04F5 E6 42 out 42h,AL
464 04F7 8A C4 mov AL,AH
465 04F9 E6 42 out 42h,AL
466 ;---------------Пауза-----------------------------
467 04FB B9 0001 mov cx,0001h
468 04FE BA 86A0 mov dx,086A0h
Turbo Assembler Version 4.1 14/12/06 21:11:55 Page 10
alrmclck.ASM
469 0501 B4 86 mov ah,86h
470 0503 CD 15 int 15h
471 ;---------------Выключение динамика---------------
472 0505 E4 61 in AL,61h
473 0507 24 FC and AL,11111100b
474 0509 E6 61 out 61h,AL
475
476 050B C6 06 02E0r 00 mov sound,0
477 0510 no_s:
478 0510 C3 ret
479 0511 BEEP endp
480
481 ;-------------------------------------------------
482 ;Функция преобразования строки (2 символа -
483 ;control_line[DI] и control_line[DI+1]) в +
484 однобайтовое число
485 ;Вход: control_line - строка, DI - номер символа
486 ;Выход: AH - число
487 ;-------------------------------------------------
488 0511 ATOI proc near
489 0511 52 PUSH DX
490 0512 8A 95 0103r mov DL,control_line[DI]
491 0516 47 inc DI
492 0517 80 EA 30 sub DL,'0'
493
494 051A B0 0A mov AL,0ah
495 051C F6 E2 mul DL
496 051E 8A E0 mov AH,AL
497 0520 8A 95 0103r mov DL,control_line[DI]
498 0524 47 inc DI
499 0525 80 EA 30 sub DL,'0'
500
501 0528 02 E2 add AH,DL
502 052A 5A pop DX
503 052B C3 ret
504 052C ATOI endp
505
506 ;*************************************************
507 ; ИНИЦИАЛИЗАЦИЯ
508 ;*************************************************
509 052C init:
510 ;---------------Проверка загрузки программы в ОП--
511 052C B8 FF00 mov AX, 0FF00h
512 052F CD 2F int 2Fh
513 0531 3C AA cmp AL, 0AAh
514 0533 74 68 je already_load
515
516 ;---------------Установка текстового режима-------
517 0535 B4 03 mov AH,03
518 0537 CD 10 int 10h
519
520 0539 B4 00 mov AH,00h
Turbo Assembler Version 4.1 14/12/06 21:11:55 Page 11
alrmclck.ASM
521 053B B0 83 mov AL,83h
522 053D CD 10 int 10h
523
524 053F B4 02 mov AH,02
525 0541 CD 10 int 10h
526
527 0543 E8 FF69 call HELP
528 ;---------------Сохрание исходного вектора 2Fh----
529 0546 B4 35 mov AH,35h
530 0548 B0 2F mov AL,2Fh
531 054A CD 21 int 21h
532 054C 89 1E 011Dr mov word ptr old_2F,BX
533 0550 8C 06 011Fr mov word ptr old_2F+2,ES
534 ;---------------Установка нашего обработчика 2Fh--
535 0554 B4 25 mov AH,25h
536 0556 B0 2F mov AL,2Fh
537 0558 BA 0430r mov DX,offset new_2F
538 055B CD 21 int 21h
539 ;---------------Сохрание исходного вектора 08h----
540 055D B4 35 mov AH,35h
541 055F B0 08 mov AL,08h
542 0561 CD 21 int 21h
543 0563 89 1E 0119r mov word ptr old_08,BX
544 0567 8C 06 011Br mov word ptr old_08+2,ES
545 ;---------------Установка нашего обработчика 08h--
546 056B B4 25 mov AH,25h
547 056D B0 08 mov AL,08h
548 056F BA 0396r mov DX,offset new_08
549 0572 CD 21 int 21h
550 ;---------------Сохрание исходного вектора 09h----
551 0574 B4 35 mov AH,35h
552 0576 B0 09 mov AL,09h
553 0578 CD 21 int 21h
554 057A 89 1E 0121r mov word ptr old_09,BX
555 057E 8C 06 0123r mov word ptr old_09+2,ES
556 ;---------------Установка нашего обработчика 09h--
557 0582 B4 25 mov AH,25h
558 0584 B0 09 mov AL,09h
559 0586 BA 02ECr mov DX,offset new_09
560 0589 CD 21 int 21h
561
562 058B BA 0144r mov DX, offset mess_loaded
563 058E E8 FF17 call STR_OUT
564 ;---------------Выгрузка резидента в ОП-----------
565 0591 B4 31 mov ah,31h
566 0593 B0 00 mov al, 0
567 0595 BA 0053 mov dx,(init-start+10fh)/16
568 0598 CD 21 int 21h
569 059A EB 07 90 jmp exit
570
571 059D already_load:
572 059D BA 0125r mov DX, offset mess_load
Turbo Assembler Version 4.1 14/12/06 21:11:55 Page 12
alrmclck.ASM
573 05A0 E8 FF05 call STR_OUT
574 05A3 exit:
575 05A3 B8 4C00 mov AX,4C00h ;Функция завершения +
576 программы
577 05A6 CD 21 int 21h
578
579 05A8 code ends
580 end start
2.Файл unldtsr.lst
Turbo Assembler Version 4.1 08/12/06 20:57:21 Page 1
unldtsr.ASM
1 0000 data segment 'data'
2 ;-----------------------данные--------------------
3 0000 50 72 6F 67 72 61 6D+ mess_hasnt_load db 'Program hasnt already loaded +
4 20 68 61 73 6E 74 20+ !!!','$'
5 61 6C 72 65 61 64 79+
6 20 6C 6F 61 64 65 64+
7 20 21 21 21 24
8 0021 50 72 6F 67 72 61 6D+ mess_unload db 'Program unloaded and interrupts +
9 20 75 6E 6C 6F 61 64+ restored !!!','$'
10 65 64 20 61 6E 64 20+
11 69 6E 74 65 72 72 75+
12 70 74 73 20 72 65 73+
13 74 6F 72 65 64 20 21+
14 21 21 24
15
16 004E data ends
17
18 0000 stck segment stack 'stack'
19 0000 0100*(??) db 256 dup (?)
20 0100 stck ends
21
22
23 0000 cseg segment 'code'
24 assume CS:cseg, DS:data, SS:stck
25 0000 start:
26 0000 B8 0000s mov AX,data
27 0003 8E D8 mov DS,AX
28 ;---------------Проверка загрузки резидента-----
29 0005 B8 FF01 mov AX, 0FF01h
30 0008 CD 2F int 2Fh
31 000A 3C AA cmp AL, 0AAh
32 000C 74 09 je unload
33 ;---------------Резидент не загружен------------
34 000E hasnt_load:
35 000E BA 0000r mov DX, offset mess_hasnt_load
36 0011 E8 000E call STR_OUT
37 0014 EB 07 90 jmp exit
38 ;---------------Резидент выгружен---------------
39 0017 unload:
40 0017 BA 0021r mov DX, offset mess_unload
41 001A E8 0005 call STR_OUT
42
43 001D exit:
44 001D B8 4C00 mov AX,4C00h ;Функция завершения +
45 программы
46 0020 CD 21 int 21h
47
48 ;-------------------------------------------------
49 ;Процедура вывода строки на экран
50 ;ВХОД: DX - адрес строки
51 ;ВЫХОД: нет
52 ;-------------------------------------------------
Turbo Assembler Version 4.1 08/12/06 20:57:21 Page 2
unldtsr.ASM
53 0022 STR_OUT proc near
54 0022 50 push AX
55 0023 B4 09 mov AH,09h
56 0025 CD 21 int 21h
57 0027 58 pop AX
58 0028 C3 ret
59 0029 STR_OUT endp
60
61 0029 cseg ends
62
63 end start
16