Удаление слов использованием резидентной программы
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
кроме последней, существуют. Для DOS 3.3 и более ранних версий длина строки не должна превышать 64 байта.
Выход: CF=0 если директория создана
CF=1 и АХ = 3, если путь не найден
CF=1 и АХ = 5, если доступ запрещен.
- Функция 5Bh int 21h Создание файла
Вход:
AH = 5Bh.
- Функция 40h int 21h запись в file.
Вход:
AH = 40h.
DS:DX адрес начала строки
Выход:
CF = 0 AX число записанных байтов
CF=1 код ошибки.
- Функция 3eh int 21h закрытие file
Вход:
AH = 3Eh;
BX идентификатор файла;
Выход:
CF=0 если не произошла ошибка
CF=1и АХ = 6, если неправильный идентификатор.
- Функция 3dh int 21h открыть существующий файл
Вход:
AH = 3Dh;
DS:DXадрес ASCIZ-строки с полным именем файла
Выход:
CF=0и АХ = идентификатор файла, если не произошла ошибка CF=1и АХ = 2, если файл не найден
CF=1и АХ = 3, если путь не найден
CF=1и АХ = 4, если слишком много открытых файлов
CF=1и АХ = 5, если доступ запрещен
CF=1и АХ = 0Сh, неправильный режим доступа.
- Функция 3Fh int 21h чтение файла
Вход:
АН=3Fh
BX идентификатор файла
CX число байтов
DS:DX адрес буфера для приема данных.
Выход:
CF=0и АХ = число считанных байтов, если не произошла ошибка
CF=1и АХ = 05h, если доступ запрещен
CF=1и АХ = 6, если неправильный идентификатор.
- Функция 41h int 21h удаление файла
Вход:
AH = 41h
DS:DXадрес ASCIZ-строки с полным именем файла.
Выход:
CF=0 если файл удален
CF=1и АХ = 02h, если файл не найден
CF=1и АХ = 03h, если путь не найден
CF=1и АХ = 05h, если доступ запрещен.
- Функция 56h int 21h Переименовать файл.
Вход:
AH = 56h;
Текст подпрограмм
Cм. приложение А.
3.5 Тестирование
3.5.1 Цель испытаний
Выяснить поведение программы в различных ситуациях, созданных пользователем.
3.5.2 Тесты
Тест №1
Действия: первый запуск резидентной программы.
Реакция программы: выводится уведомление об установке резидента. См. рисунок 3.3.
Рисунок 3.3 Тест №1
Список использованных источников
1.Гордеев А. В., Молчанов А. Ю. Системное программное обеспечение. Питер, 2003. 736 с.
2.Зубков С. В. Assembler для DOS, Windows и UNIX. М.: ДМК, 2000. 608 с.
3.Кулаков В. Программирование на аппаратном уровне: специальный справочник (+дискета). 2-е издание. СПб.: Питер, 2003. 847 с. ил.
4.Финогенов К. Г., Самоучитель по системным функциям MS DOS. 3-е изд., М.: Горячая линия Телеком, 2001. 382с.
5.Фролов А.В., Фролов Г.В. Аппаратное обеспечение персонального компьютера. М.: Диалог-МИФИ, 1997. 304 с (БСП т.33).
6.Юров В. И. Assembler. Учебник для вузов.2-е изд. СПб.: Питер, 2006. 637 с.: ил.
Приложение А
Листинг файла residenta.lst
Turbo Assembler Version 4.1 26/12/10 02:44:32 Page 1
residenta.ASM
1 0000 .modeltiny
2 0000 .code
3 .486
4 org 100h
5 0100 main proc far
6 0100 E9 01C8 jmp iniz
7 0103 00000000 old_2Fh dd 0 ;системный адрес int_2Fh
8 0107 00000000 old_09h dd 0 ;системный адрес 09h
9 010B 44 3A5C 74 65 6D 70+ filename1 dbD:\temp\file1.txt,0
10 5C 6669 6C 65 31 2E+
11 74 7874 00
12 011D 44 3A5C 74 65 6D 70+ filename2 dbD:\temp\file2.txt,0
13 5C 6669 6C 65 32 2E+
14 74 7874 00
15 012F ???? handle1 dw ?
16 0131 ???? handle2 dw ?
17 0133 14 bufferdb 20
18 0134 ???? buf_len dw ?
19 0136 12*(??) cont db 18 dup (?);содержимое буфера
20 0148 0A 0D24 str_break db 10,13,$
21 014B 49 6E70 75 74 20 73+ welcome db "Input string, please",$
22 74 7269 6E 67 2C 20+
23 70 6C65 61 73 65 24
24 0160 53 7472 69 6E 67 20+ doing db "String afterdeleting",$
25 61 6674 65 72 20 64+
26 65 6C65 74 69 6E 67+
27 24
28 0176 44 3A5C 74 65 6D 70+ directory db D:\temp,0
29 00
30
31 017E new_2Fh: ;прикладной обработчик 2Fh
32 017E 3D C800 cmp ax,0c800h ;подфункция повторной загрузки
33 0181 74 0B90 90 jzinst
34 0185 3C 01 cmp al,01 ;подфункция выгрузки
35 0187 74 0E90 90 jzuninstall
36 018B EB 0490 jmp out_2Fh
37 018E inst:
38 018E B0 FF mov al,0ffh
39 0190 CF iret ;возврат после первого вызоваint 2Fh
40 0191 out_2Fh:
41 0191 2E: FF 2E 0103r jmp cs:old_2Fh ;после обработки необходим переход в транзитную часть
42 0196 CF iret;откудабыл осуществленвызов
43 0197 uninstall:
44 0197 1E push ds
45 0198 06 push es
46 0199 B8 2509 mov ax,2509h ;восстановление int 09h
47 019C 2E: C5 16 0107r lds dx,cs:old_09h
48 01A1 CD 21 int 21h
49 01A3 B8 252F mov ax,252Fh ;восстановление int_2Fh
50 01A6 2E: C5 16 0103r lds dx,cs:old_2Fh
51 01AB CD 21 int 21h
52 ;выгрузка окруж. резидента
53 ; адрес окруж.в PSP по смещению 2ch
54 01AD 2E: 8E 06 002C mov es,cs:2ch ;сегментный адрес окруж.
55 01B2 B4 49 mov ah,49h
56 01B4 CD 21 int 21h
57 ;выгрузка резидента
Turbo Assembler Version 4.1 26/12/10 02:44:32 Page 2
q.ASM
58 01B6 0E push cs
59 01B7 07 pop es;сегментный адрес резидента
60 01B8 B4 49 mov ah,49h
61 01BA CD 21 int 21h
62 01BC 07 pop es
63 01BD 1F pop ds
64 01BE CF iret ;возвращение после третьего вызова int 2Fh
65
66 01BF asmb:
67 ;создание директории D:\temp
68 01BF B4 39 mov ah,39h
69 01C1 BA 0176r mov dx,offset directory
70 01C4 CD 21 int 21h
71 ;создание file1
72 01C6 B4 5B mov AH,5Bh
73 01C8 B9 0000 mov CX,0 ; без атрибутов
74 01CB BA 010Br mov DX,offset filename1
75 01CE CD 21 int 21h
76 01D0 A3 012Fr mov handle1, ax ; дескриптор file в handle1
77 ;очистка экрана
78 01D3 B8 0003 mov AX,0003h
79 01D6 CD 10 int 10h
80 ;выводна экран приветствия
81 01D8 B4 09 mov AH,09h
82 01DA BA 014Br lea DX,welcome
83 01DD CD 21 int 21h
84 01DF B4 09 mov AH,09h
85 01E1 BA 0148r lea DX,str_break
86 01E4 CD 21 int 21h
87 ;ввод строки склавиатуры
88 01E6 B4 0A mov AH,0Ah
89 01E8 BA 0133r lea DX,buffer
90 01EB CD 21 int 21h ; в buf_len -фактическая длина строки
91 01ED B4 09 mov AH,09h
92 01EF BA 0148r lea DX,str_break
93 01F2 CD 21 int 21h
94 ;выводна экран удаляемых слов
95 01F4 B4 09 mov AH,09h
96 01F6 BA 0160r lea DX,doing
97 01F9 CD 21 int 21h
98 01FB B4 09 mov AH,09h
99 01FD BA 0148r lea DX,str_break
100 0200 CD 21 int 21h
101 ;запись в file1
102 0202 B4 40 mov AH,40h
103 0204 8B 1E012Fr mov BX,handle1
104 0208 33 C9 xor CX,CX
105 020A 8B 0E0134r mov CX,buf_len
106 020E BA 0136r lea DX,cont ; содержимое buffer
107 0211 CD 21 int 21h
108 ;выводна экран file1
109 0213 B4 40 mov AH,40h
110 0215 BB 0001 mov BX,1
111 0218 8B 0E0134r