Автор: Пользователь скрыл имя, 02 Мая 2012 в 17:54, курсовая работа
Целью создания программного продукта данной курсовой работы является изучение принципов работы резидентных программ, строения и управления памятью, взаимодействия с аппаратными средствами персонального компьютера.
1 ТЕХНИЧЕСКОЕ ЗАДАНИЕ 5
1.1 Введение 5
1.2 Основания для разработки 6
1.3 Назначение разработки 6
1.3.1 Функциональное и эксплуатационное назначение изделия 6
1.3.2 Перечень требований пользователя к программному продукту 7
1.3.3 Рассмотренные альтернативы 7
1.4 Требования к программе или программному изделию 7
1.4.1 Стандарты 7
1.4.2 Требования к составу и параметрам технических средств 7
1.4.3 Требования к информационной и программной совместимости 8
1.4.4 Требования к функциональным характеристикам 8
1.4.5 Результирующие компоненты изделия 9
1.4.6 Носители информации 9
1.4.7 Безопасность и секретность 9
1.4.8 Рестарт 9
1.4.9 Удобства эксплуатации 9
1.4.10 Мобильность 10
1.5 Требования к программной документации 10
1.6 Стадии и этапы разработки 11
1.7 Порядок контроля и приемки 11
2 ТЕХНИЧЕСКИЙ ПРОЕКТ 12
2.1 Анализ области 12
2.2 Структура программы 12
2.2.1 Модуль cur.asm 12
3 РАБОЧИЙ ПРОЕКТ 15
3.1 Введение 15
3.2 Назначение разработки 15
3.3 Требования к программе или программному изделию 15
3.3.1 Стандарты 15
3.3.2 Требования к составу и параметрам технических средств 15
3.3.3 Требования к информационной и программной совместимости 16
3.3.4 Результирующие компоненты изделия 16
3.3.5 Безопасность и секретность 16
3.3.6 Рестарт 16
3.4 Описание модуля cur.asm 17
3.4.1 Структура модуля 17
3.4.2 Описание подпрограмм 18
3.5 Тестирование 21
3.5.1 Цель испытаний 21
3.5.2 Тесты 22
Список использованных источников 24
Приложения 25
28 022F B0 FF mov al,0FFh
29 0231 CF iret
30 0232 out_2Fh:
31 0232 2E: FF 2E 0103r jmp cs:old_2Fh
32 0237 CF iret
33 0238 uninstall:
34 0238 1E push ds
35 0239 06 push es
36
37 023A B8 2560 mov ax,2560h
38 023D 2E: C5 16 0107r lds dx,cs:old_60h
39 0242 CD 21 int 21h
40
41 0244 B8 252F mov ax,252Fh
42 0247 2E: C5 16 0103r lds dx,cs:old_2Fh
43 024C CD 21 int 21h
44
45 024E 2E: 8E 06 002C mov es,cs:2ch
46 0253 B4 49 mov ah,49h
47 0255 CD 21 int 21h
48
49 0257 0E push cs
50 0258 07 pop es
51 0259 B4 49 mov ah,49h
52 025B CD 21 int 21h
53 025D 07 pop es
54 025E 1F pop ds
55
56 025F CF iret
_Turbo Assembler Version 4.1 20/12/10 12:28:19 Page 2
arrays.ASM
57 ;new_2Fh endp
58 0260 asmb:
59 0260 FA cli
60 0261 9C pushf
61
62 0262 60 pusha
63 0263 1E push ds
64 0264 06 push es
65
66 ;блок анализа командной строки
67 0265 33 F6 XOR SI,SI
68 0267 33 FF XOR DI,DI
69 0269 B2 01 MOV DL,1
70 026B LOO:
71 026B 80 BC 0081 0D CMP BYTE PTR [81H+SI],0dh
72 0270 74 1E 90 90 JZ NO_PAR
73 0274 8A 84 0081 MOV AL,[81H+SI]
74 0278 3C 20 CMP AL,' '
75 027A 74 0B 90 90 JZ SPACE
76 027E 32 D2 XOR DL,DL
77 0280 88 85 012Fr MOV [PATH+DI],AL
78 0284 47 INC DI
79 0285 EB 06 JMP SHORT L001
80 0287 SPACE:
81 0287 0A D2 OR DL,DL ;если DL=0 тогда первый параметр закончился
82 0289 74 05 90 90 JZ NO_PAR
83 028D L001:
84 028D 46 INC SI
85 028E EB DB JMP SHORT LOO
86 0290 NO_PAR:
87 0290 0B F6 OR SI,SI ;был ли параметр
88 0292 75 0C 90 90 JNZ CONT
89 ;сообщение, затем выходим
90 0296 BA 010Br MOV DX,OFFSET TEXT1
91 0299 B4 09 MOV AH,9
92 029B CD 21 INT 21H
93 029D EB 7C 90 JMP EXIT
94 ;теперь открытие и преобразование файла
95 02A0 CONT:
96 ;открыть файл
97 02A0 BA 012Fr LEA DX,PATH
98 02A3 B8 3D02 MOV AX,3D02H
99 02A6 CD 21 INT 21H
100 02A8 73 0C 90 90 JNC NORM
101 02AC BA 011Dr MOV DX,OFFSET TEXT2
102 02AF B4 09 MOV AH,9
103 02B1 CD 21 INT 21H
104 02B3 EB 66 90 JMP EXIT
105 02B6 NORM :
106 02B6 8B D8 MOV BX,AX
107 02B8 33 FF XOR DI,DI ;в DI будет хранится начало считываемого участка
108 02BA POVT:
109 ;читать участок файла в буфер
110 02BA BA 017Fr LEA DX,BUF
111 02BD B9 00A0 MOV CX,160 ;размер буфера
112 02C0 CD 21 INT 21H
113 02C2 8A E0 MOV AH,AL
_Turbo Assembler Version 4.1 20/12/10 12:28:19 Page 3
arrays.ASM
114 02C4 BE 017Fr LEA SI,BUF
115 02C7 3C 00 CMP AL,0
116 ;просматриваем буфер и преобразуем латинский шрифт
117 02C9 L02 :
118 02C9 74 18 90 90 JZ ZER
119 02CD 80 3C 61 CMP BYTE PTR [SI],97
120 02D0 72 0C 90 90 JB L01
121 02D4 80 3C 7A CMP BYTE PTR [SI],122
122 02D7 77 05 90 90 JA L01
123 02DB 80 2C 20 SUB BYTE PTR [SI],32
124 02DE L01:
125 02DE 46 INC SI
126 02DF FE C8 DEC AL
127 02E1 EB E6 JMP SHORT L02
128 02E3 ZER:
129 02E3 50 PUSH AX
130 ;перемещаем указатель файла назад
131 02E4 B8 4200 MOV AX,4200H
132 02E7 33 C9 XOR CX,CX
133 02E9 BA 0000 MOV DX,DI /указатель начала считанного участка
**Error** arrays.ASM(129) Need expression
134 02EC CD 21 INT 21H
135 ; пишем буфер на диск
136 ;количество записанных байт может, вообще говоря,
137 ;быть больше 160
138 02EE C7 06 0000 0000 MOV АН,40Н
**Error** arrays.ASM(134) Too few operands to instruction
*Warning* arrays.ASM(134) Argument needs type override
139 02F4 8F 06 0000 POP СХ
**Error** arrays.ASM(135) Too few operands to instruction
*Warning* arrays.ASM(135) Argument needs type override
140 02F8 8A CD MOV CL,CH
141 02FA 32 ED XOR CH,CH
142 02FC BA 017Fr LEA DX,BUF
143 02FF CD 21 INT 21H
144 ;проверяем, не достигнут ли конец файла
145 0301 58 POP AX
146 0302 8A C4 MOV AL,AH
147 0304 83 36 0000 00 XOR АН,АН
**Error** arrays.ASM(143) Too few operands to instruction
*Warning* arrays.ASM(143) Argument needs type override
148 0309 83 C7 00 ADD DI,АХ
**Error** arrays.ASM(144) Need address or register
149 030C 3C A0 CMP AL,160 ;сравниваем с размером буфера
150 030E 74 AA JZ POVT
151 ;закрыть файл
152 0310 C7 06 0000 0000 MOV АН,ЗЕН
**Error** arrays.ASM(148) Too few operands to instruction
*Warning* arrays.ASM(148) Argument needs type override
153 0316 CD 21 INT 21H
154 0318 07 pop es
155 0319 1F pop ds
156 031A 61 popa
157 031B FB exit: sti
158 031C CF iret
159
160 031D main endp
_Turbo Assembler Version 4.1 20/12/10 12:28:19 Page 4
arrays.ASM
161 =021D size=$-main
*Warning* arrays.ASM(157) Reserved word used as symbol: SIZE
162 031D 52 65 73 69 64 65 6E+ msg1 db 'Resident is load',10,13,'$'
163 74 20 69 73 20 6C 6F+
164 61 64 0A 0D 24
165 0330 52 65 73 69 64 65 6E+ msg3 db 'Resident is unload',10,13,'$'
166 74 20 69 73 20 75 6E+
167 6C 6F 61 64 0A 0D 24
168 0345 iniz proc
169 0345 0E push cs
170 0346 1F pop ds
171 0347 B8 C800 mov ax,0c800h
172 034A CD 2F int 2Fh
173 034C 3C FF cmp al,0FFh
174 034E 74 3A 90 90 jz installed
175
176 0352 B8 352F mov ax,352Fh
177 0355 CD 21 int 21h
178 0357 89 1E 0103r mov word ptr old_2Fh,bx
179 035B 8C 06 0105r mov word ptr old_2Fh[2],es
180
181 035F B8 252F mov ax,252fh