Удаление слов использованием резидентной программы
Курсовой проект - Компьютеры, программирование
Другие курсовые по предмету Компьютеры, программирование
mov CX,buf_len
112 021C BA 0136r lea DX,cont
113 021F CD 21 int 21h
114 0221 B4 09 mov AH,09h
Turbo Assembler Version 4.1 26/12/10 02:44:32 Page 3
q.ASM
115 0223 BA 0148r lea DX,str_break
116 0226 CD 21 int 21h
117 ;закрытие file1
118 0228 B4 3E mov ah,3eh
119 022A 8B 1E012Fr mov bx, handle1
120 022E CD 21 int 21h
121 0230 read_next:
122 0230 B4 3D mov ah,3dh ;открыть существующий файл
123 0232 B0 00 mov al, 0
124 0234 BA 010Br lea dx, filename1
125 0237 CD 21 int 21h
126 0239 A3 012Fr mov handle1, ax
127 023C read_next_byte:
128 023C B4 3F mov ah,3Fh ; чтение файла
129 023E 8B 1E012Fr mov bx,handle1
130 0242 B9 0001 mov cx,1 ; считывать один байт
131 0245 BA 0133r mov dx,offset buffer ; начало буфера - в DX
132 0248 CD 21 int 21h
133 024A 3D 0000 cmp ax,0 ; ах =0 - файл пуст
134 024D 74 6F90 90 je exit
135 0251 A0 0133r mov al, byte ptr buffer
136 0254 3C 20 cmp al,20h ; если не пробел
137 0256 75 E4 jne read_next_byte ; считать следующий байт
138 0258 B4 3F mov ah,3Fh ; еслипробел найден
139 025A 8B 1E012Fr mov bx,handle1 ; чтение файладо конца
140 025E B9 0014 mov cx,20 ; с позиции пробела
141 0261 BA 0133r mov dx, offsetbuffer; и запись в новый файл
142 0264 CD 21 int 21h
143 0266 A1 0134r mov ax,buf_len
144 ;создание File2
145 0269 B4 5B mov AH,5Bh
146 026B B9 0000 mov CX,0 ; без атрибутов
147 026E BA 011Dr mov DX,offset filename2
148 0271 CD 21 int 21h
149 0273 A3 0131r mov handle2, ax ; дескриптор file1 в handle2
150 ;запись в File2
151 0276 B4 40 mov AH,40h
152 0278 8B 1E0131r mov BX,handle2
153 027C 8B 0E0134r mov CX,buf_len
154 0280 BA 0136r lea DX,cont
155 0283 CD 21 int 21h
156 ;выводна экран file2
157 0285 B4 40 mov AH,40h
158 0287 BB 0001 mov BX,1
159 028A 8B 0E0134r mov CX,buf_len
160 028E BA 0136r lea DX,cont
161 0291 CD 21 int 21h
162 0293 B4 09 mov AH,09h
163 0295 BA 0148r lea DX,str_break
164 0298 CD 21 int 21h
165 ;закрытие File1
166 029A B4 3E mov AH,3Eh
167 029C 8B 1E012Fr mov BX,handle1
168 02A0 CD 21 int 21h
169 ;удаление File1
170 02A2 B4 41 mov AH,41h
171 02A4 BA 010Br mov DX,offset filename1
Turbo Assembler Version 4.1 26/12/10 02:44:32 Page 4
q.ASM
172 02A7 CD 21 int 21h
173 ;закрытие File2
174 02A9 B4 3E mov AH,3Eh
175 02AB 8B 1E0131r mov BX,handle2
176 02AF CD 21 int 21h
177 ;переименование file2
178 02B1 B4 56 mov AH,56h
179 02B3 BA 011Dr lea dx,filename2
180 02B6 BF 010Br lea di,filename1
181 02B9 CD 21 int 21h
182 02BB E9 FF72 jmp read_next
183 02BE exit:
184 02BE B8 4C00 mov ax,4c00h
185 02C1 CD 21 int 21h
186 02C3 main endp
187 =01C3 size =$ - main
*Warning* q.ASM(177) Reserved word usedas symbol: SIZE
188
189 ;транзитные данные
190 02C3 4C 6F61 64 69 6E 67+ mes dbLoading$
191 24
192 02CB iniz proc ;проверка повторной загрузки
193 02CB 0E push cs
194 02CC 1F pop ds
195 02CD B8 C800 mov ax,0c800h ;нулевая подфункция - повтор
196 02D0 CD 2F int 2Fh
197 02D2 3C FF cmp al,0ffh ;признак резидента в памяти
198 02D4 74 3390 90 jzinstalled
199 ;чтение адреса int2Fh в old_2fh
200 02D8 B8 352F mov ax,352Fh
201 02DB CD 21 int 21h ;ES:BX - адрес int2Fh
202 02DD 89 1E0103r mov word ptr old_2Fh,bx
203 02E1 8C 060105r mov word ptr old_2Fh[2],es
204 ;запись прикладного адреса CS:new_2Fh в int 2Fh (первая резервная точка входа)
205 02E5 B8 252F mov ax,252Fh
206 02E8 BA 017Er mov dx,offset new_2Fh
207 02EB CD 21 int 21h
208 ;чтение адресаint 09hв old_09h
209 02ED B8 3509 mov ax,3509h
210 02F0 CD 21 int 21h ;ES:BX- адресint 09h
211 02F2 89 1E0107r mov word ptr old_09h,bx
212 02F6 8C 060109r mov word ptr old_09h[2],es
213 ;запись прикладного адреса CS:asmb в int 09h (вторая резервнаяточка входа)
214 02FA B8 2509 mov ax,2509h
215 02FD BA 01BFr mov dx,offset asmb
216 0300 CD 21 int 21h
217 ;сохранение резидента и завершение работы
218 0302 B4 31 mov ah,31h
219 0304 BA 002D mov dx,(size+100h+0Fh)/16
220 0307 CD 21 int 21h ;точкавыхода при загрузке резидента
221 0309 installed:
222 0309 B4 09 mov ah,09h
223 030B BA 02C3r mov dx,offset mes
224 030E CD 21 int 21h
225 0310 rez:
226 0310 B4 00 mov ah,00 ;цикл проверки нажатия цифровых клавиш
227 0312 CD 16 int 16h ;ah = scan-кодклавиши
Turbo Assembler Version 4.1 26/12/10 02:44:32 Page 5
q.ASM
228 ;al = ASCII-код символа
229 0314 80 FC30 cmp ah,30h ;клавиша "0"
230 0317 74 4390 90 jz outp
231 031B 80 FC31 cmp ah,31h ;клавиша "1"
232 031E 74 3C90 90 jz outp
233 0322 80 FC32 cmp ah,32h ;клавиша "2"
234 0325 74 3590 90 jz outp
235 0329 80 FC33 cmp ah,33h ;клавиша "3"
236 032C 74 2E90 90 jz outp
237 0330 80 FC34 cmp ah,34h ;клавиша "4"
238 0333 74 2790 90 jz outp
239 0337 80 FC35 cmp ah,35h ;клавиша "5"
240 033A 74 2090 90 jz outp
241 033E 80 FC36 cmp ah,36h ;клавиша "6"
242 0341 74 1990 90 jz outp
243 0345 80 FC37 cmp ah,37h ;клавиша "7"
244 0348 74 1290 90 jz outp
245 034C 80 FC38 cmp ah,38h ;клавиша "8"
246 034F 74 0B90 90 jz outp
247 0353 80 FC39 cmp ah,39h ;клавиша "9"
248 0356 74 0490 90 jz outp
249 035A EB B4 jmp rez
250 035C outp:
251 035C B8 C801 mov ax,0c801h ;01h- подфункция выгрузки
252 035F CD 2F int 2Fh
253 0361 iniz endp
254 end main
Turbo Assembler Version 4.1 26/12/10 02:44:32 Page 6
Symbol Table
Symbol Name Type Value
??DATE Text "26/12/10"
??FILENAME Text "q "
??TIME Text "02:44:32"
??VERSION Number 040A
@32BIT Text 0
@CODE Text DGROUP
@CODESIZE Text 0
@CPU Text 1F1FH
@CURSEG Text _TEXT
@DATA Text DGROUP
@DATASIZE Text 0
@FILENAME Text Q
@INTERFACE Text 000H
@MODEL Text 1
@STACK Text DGROUP
@WORDSIZE Text 4
ASMB Near DGROUP:01BF
BUFFER Byte DGROUP:0133
BUF_LEN Word DGROUP:0134
CONT Byte DGROUP:0136
DIRECTORY Byte DGROUP:0176
DOING Byte DGROUP:0160
EXIT Near DGROUP:02BE
FILENAME1 Byte DGROUP:010B
FILENAME2 Byte DGROUP:011D
HANDLE1 Word DGROUP:012F
HANDLE2 Word DGROUP:0131
INIZ Near DGROUP:02CB
INST Near DGROUP:018E
INSTALLED Near DGROUP:0309
MAIN Far DGROUP:0100
MES Byte DGROUP:02C3
NEW_2FH Near DGROUP:017E
OLD_09H Dword DGROUP:0107
OLD_2FH Dword DGROUP:0103
OUTP Near DGROUP:035C
OUT_2FH Near DGROUP:0191
READ_NEXT Near DGROUP:0230
READ_NEXT_BYTE Near DGROUP:023C
REZ Near DGROUP:0310
SIZE Number 01C3
STR_BREAK Byte DGROUP:0148
UNINSTALL Near DGROUP:0197
WELCOME Byte DGROUP:014B
Groups & Segments Bit Size Align Combine Class
DGROUP Group
_DATA 16 0000 Word Public DATA
_TEXT 16 0361 Word Public CODE
Turbo Assembler Version 4.1 26/12/10 02:44:32 Page 7
Error Summary
*Warning* q.ASM(177) Reserved word usedas symbol: SIZE