Лист (1071495), страница 2
Текст из файла (страница 2)
298 0369 B4 09 sprav: mov AH, 09h
299 036B BA 03EAr mov DX, offset spravka
300 036E CD 21 int 21h
301 0370 B8 4C00 mov AX, 4C00h
302 0373 CD 21 int 21h
303
304 0375 26: 8A 04 prob2: mov AL, ES:[SI]
305 0378 3C 20 cmp AL, ' '
306 037A 75 03 jne vih3
307 037C 46 inc SI
308 037D E2 F6 loop prob2
309
310 037F 26: 8A 04 vih3: mov AL, ES:[SI]
311 0382 3C 00 cmp AL, 0
312 0384 75 02 jne error_p
313 0386 07 konec: pop ES
314 0387 C3 ret
315
316 0388 B4 09 error_p: mov AH, 09h
317 038A BA 042Br mov DX, offset error
318 038D CD 21 int 21h
319 038F B8 4C01 mov AX, 4C01h
320 0392 CD 21 int 21h
321 0394 param endp
322
323 0394 53 75 63 63 65 73 66+ tsr_load db 'Succesfully loaded!', 10, 13, '$'
324 75 6C 6C 79 20 6C 6F+
325 61 64 65 64 21 0A 0D+
326 24
327 03AA 41 6C 72 65 61 64 79+ tsr_error db 'Already loaded!', 10, 13, 'Can not load twice', 10, 13, '$'
328 20 6C 6F 61 64 65 64+
329 21 0A 0D 43 61 6E 20+
330 6E 6F 74 20 6C 6F 61+
331 64 20 74 77 69 63 65+
332 0A 0D 24
333 03D0 55 6E 6C 6F 61 64 65+ tsr_unload db 'Unloaded!',10, 13, '$'
334 64 21 0A 0D 24
335 03DC 4E 6F 74 20 6C 6F 61+ ninst db 'Not loaded!', 10, 13, '$'
336 64 65 64 21 0A 0D 24
337
338 03EA 53 74 61 72 74 20 61+ spravka db 'Start as:', 10, 13,'>trns.com',10,13, 'To Ctrl+x',10,13, 'To unload:+
339 73 3A 0A 0D 3E 74 72+ call unldtsr.exe',10,13,'$'
340 6E 73 2E 63 6F 6D 0A+
341 0D 54 6F 20 20 43 74+
342 72 6C 2B 78 0A 0D 54+
343 6F 20 20 75 6E 6C 6F+
344 61 64 3A 20 63 61 6C+
345 6C 20 75 6E 6C 64 74+
346 73 72 2E 65 78 65 0A+
347 0D 24
348 042B 42 61 64 20 70 61 72+ error db 'Bad parametrs!', 10, 13, '$'
349 61 6D 65 74 72 73 21+
350 0A 0D 24
351
352 043C 00 par_u db 0
353 043D code ends
354 end start
Symbol Name Type Value
??DATE Text "23/12/05"
??FILENAME Text "trns "
??TIME Text "05:13:47"
??VERSION Number 040A
@32BIT Text 0
@CODE Text DGROUP
@CODESIZE Text 0
@CPU Text 0101H
@CURSEG Text CODE
@DATA Text DGROUP
@DATASIZE Text 0
@FILENAME Text TRNS
@INTERFACE Text 000H
@MODEL Text 1
@STACK Text DGROUP
@WORDSIZE Text 2
BOL_B Near CODE:01A5
BOL_G Near CODE:0220
CAPS Byte CODE:010C
DALEE Near CODE:0147
END_RES Number CODE:02D5
ERROR Byte CODE:042B
ERROR_P Near CODE:0388
GO Near CODE:0174
GO1 Near CODE:0184
GO10 Near CODE:020C
GO11 Near CODE:0228
GO12 Near CODE:023C
GO13 Near CODE:0249
GO14 Near CODE:0256
GO15 Near CODE:0263
GO16 Near CODE:0270
GO17 Near CODE:027D
GO2 Near CODE:0191
GO3 Near CODE:01AD
GO4 Near CODE:01C1
GO5 Near CODE:01CE
GO6 Near CODE:01DB
GO7 Near CODE:01E8
GO8 Near CODE:01F5
GO9 Near CODE:0202
INIT Near CODE:02D5
INSTALL Near CODE:02A0
INSTALLED Near CODE:0326
KONEC Near CODE:0386
LOAD_TSR Near CODE:02DB
NEW_09H Near CODE:010D
NEW_2FH Near CODE:0290
NINST Byte CODE:03DC
OLD_09H Dword CODE:0107
OLD_2FH Dword CODE:0103
PARAM Near CODE:0332
PAR_U Byte CODE:043C
PROB Near CODE:0342
PROB2 Near CODE:0375
PROD Near CODE:0159
SPRAV Near CODE:0369
SPRAVKA Byte CODE:03EA
START Near CODE:0100
TSR_ERROR Byte CODE:03AA
TSR_LOAD Byte CODE:0394
TSR_UNLOAD Byte CODE:03D0
UNINSTALL Near CODE:02A4
VIH Near CODE:0287
VIH1 Near CODE:034C
VIH3 Near CODE:037F
VIHOD Near CODE:02D0
VKL Byte CODE:010B
_VIH Near CODE:0181
Groups & Segments Bit Size Align Combine Class
CODE 16 043D Para none CODE
DGROUP Group
_DATA 16 0000 Word Public DATA
_TEXT 16 0000 Word Public CODE
2. Файл UNLDTSR.EXE
Turbo Assembler Version 4.1 02/12/06 14:46:45 Page 1
unldtsr.asm
1 0000 stck segment stack
2 0000 0100*(??) db 256 dup (?)
3 0100 stck ends
4
5 0000 data segment
6 0000 53 75 63 63 65 73 66+ mes_unload db 'Succesfully unloaded',0Ah,0Dh,'$'
7 75 6C 6C 79 20 75 6E+
8 6C 6F 61 64 65 64 0A+
9 0D 24
10 0017 4E 6F 74 20 6C 6F 61+ mes_not_load db 'Not loaded',0Ah,0Dh,'$'
11 64 65 64 0A 0D 24
12 0024 data ends
13
14 0000 cseg segment
15 assume cs:cseg, ds:data, ss:stck
16
17 0000 start:
18 0000 B8 0000s mov AX, data
19 0003 8E D8 mov DS, AX
20 0005 B8 FF00 mov AX, 0FF00h ;проверим, есть ли резидент в памяти
21 0008 CD 2F int 2Fh
22 000A 3D 5353 cmp AX, 'SS'
23 000D 75 07 jne not_load ;не загружен - на выход
24 000F B8 FF01 mov AX, 0FF01h ;выгрузка резидента
25 0012 CD 2F int 2Fh
26 0014 74 09 je unload
27 0016 not_load:
28 0016 BA 0017r mov DX, offset mes_not_load ; программы не было в памяти, выдать +
29 сообщение
30 0019 E8 000E call str_out
31 001C EB 07 90 jmp exit
32
33 001F unload:
34 001F BA 0000r mov DX, offset mes_unload ; выдать сообщение об удачной выгрузке
35 0022 E8 0005 call str_out
36 0025 exit: ; выход с полной выгрузкой текущей +
37 копии программы
38 0025 B8 4C00 mov AX, 4C00H
39 0028 CD 21 int 21H
40
41 ; функция вывода строки на экран
42 ; входные данные:
43 ; DX - адрес строки
44 ; выходные данные:
45 ; нет
46 002A str_out proc
47 002A 50 push AX
48 002B B4 09 mov AH, 09h
49 002D CD 21 int 21h
50 002F 58 pop AX
51 0030 C3 ret
52 0031 str_out endp
53
54 0031 cseg ends
55 end start
Symbol Name Type Value
??DATE Text "23/12/05"
??FILENAME Text "unldtsr "
??TIME Text "03:38:10"
??VERSION Number 040A
@CPU Text 0101H
@CURSEG Text CSEG
@FILENAME Text UNLDTSR
@WORDSIZE Text 2
EXIT Near CSEG:0025
MES_NOT_LOAD Byte DATA:0017
MES_UNLOAD Byte DATA:0000
NOT_LOAD Near CSEG:0016
START Near CSEG:0000
STR_OUT Near CSEG:002A
UNLOAD Near CSEG:001F
Groups & Segments Bit Size Align Combine Class
CSEG 16 0031 Para none
DATA 16 0024 Para none
STCK 16 0100 Para Stack
10