4 / 4 / 2
Регистрация: 03.03.2011
Сообщений: 222
1

Не могу понять понять смысл резидентной программы

26.05.2014, 19:03. Показов 1207. Ответов 3
Метки нет (Все метки)

Суть препод кинул резидент, сказал чтобы сами разбирались. Увидел что ее выкладывали уже, но в ветке этой темы, там тоже не объяснили, как она работает. Вдруг кто поможет...
Assembler
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
    code segment
        .186
assume cs:code, ds:code
org 100h
start:
        jmp     load
 
        old09h          dd ?
        old2Fh          dd ?
        count           db 0
        path            db 64, ?, 65 dup (?)
        buffer          db 33 dup (?)
        mes_unload      db 0dh, 0ah, "Unload$"
        mes_write_error db 0ah, 0dh, "ERROR.", 0ah, 0dh, "$"
    message     db 2000 dup (41h)
 
 
 
int09h proc
        pushf
        call    dword ptr cs:old09h
        pusha
        push    ds
        push    es
 
        push    cs
        pop     ds
 
    mov ah, 01h
    int 16h
    jnz ok
    jmp end_09h
ok:
    cmp ax, 2D18h   ;ctrl+x
    jz exit_09h
    cmp ax, 1F13h
    jz write
    jmp end_09h
       
;---------
 
write:
    xor si, si
    xor bh, bh  
    mov cx, 2000
    mov dh, 0
    mov dl, 0
 
    cicle:
 
    mov ah, 02h
    int 10h
    
    mov ah, 08h
    int 10h
    mov message[si], al
 
    inc dl
    inc si
 
    cmp dl, 80
    jz enterline 
    endenterline:
 
    loop cicle
 
        jmp go
 
    enterline:
    inc dh
    mov dl, 0
    jmp endenterline
 
go:
        call    fil
 
        jmp     end_09h
 
;---------
 
exit_09h:
        mov     ah, 0h
        int     16h
 
        ;call    fil
 
        mov     ax, 2509h
        lds     dx, cs:old09h
        int     21h
 
        mov     ax, 252Fh
        lds     dx, cs:old2Fh
        int     21h
 
        lea     si, mes_unload
        call    print_string
 
        mov     ah, 49h
        mov     es, word ptr cs:002Ch
        int     21h
 
        push    cs
        pop     es
        mov     ah, 49h
        int     21h
 
        mov     ah, 5
        mov     cx, 1C0Dh
        int     16h
;---------
end_09h:
    ;pushf
    ;call dword ptr cs:old09h
        pop     es
        pop     ds
        popa
        iret
int09h endp
 
fil proc
        mov     ax, 3d01h
        lea     dx, path[2]
        int     21h
        mov     bx, ax
        mov     ax, 4200h
        xor     cx, cx
        xor     dx, dx
        int     21h
        mov     ah, 40h
        lea     dx, message
        mov     cx, 2000
        int     21h
 
        jnc     successfull
 
        lea     si, mes_write_error
        call    print_string
 
    successfull:
        mov     ah, 3Eh
        int     21h
        mov     count, 0
 
        ret
fil endp
 
 
 
 
int2Fh proc
        cmp     ax, 0F500h
        je      check_ok
        jmp     cs:old2Fh
  check_ok:
        mov     al, 0FFh
        iret
int2Fh endp
 
 
load:
        push    cs
        pop     ds
 
        pushf
        mov     ax, 0F500h
        int     2Fh
        cmp     al, 0FFh
        jne     no_exit
        jmp     exit
        no_exit:
 
;--------- file
        lea     si, mes_path
        call    print_string
 
        mov     ah, 0Ah
        lea     dx, path
        int     21h
 
        xor     ax, ax
        mov     al, path[1]
        add     al, 2
        mov     si, ax
        mov     path[si], 0
 
        mov     ah, 3Ch
        lea     dx, path[2]
        mov     cx, 0
        int     21h
        jnc     created
 
        lea     si, mes_file_error
        call    print_string
        mov     ax, 4C00h
        int     21h
 
     created:
        mov     bx, ax
        mov     ah, 3Eh
        int     21h
 
;---------
 
        mov     ax, 352Fh
        int     21h
 
        mov     word ptr old2Fh, bx
        mov     word ptr old2Fh+2, es
 
        mov     ax, 252Fh
        lea     dx, int2Fh
        int     21h
 
        mov     ax, 3509h
        int     21h
 
        mov     word ptr old09h, bx
        mov     word ptr old09h+2, es
 
        mov     ax, 2509h
        lea     dx, int09h
        int     21h
        
         mov ah,03h
        int 10h
        push dx
      
        lea     si, mes_load
        call    print_string
 
         pop dx
        inc dh
        mov ah, 02h
        int 10h
 
        mov     ax, 3100h
        mov     dx, (load - start + 100h + 0Fh)/16
        int     21h
exit:
        lea     si, mes_already
        call    print_string
 
        mov     ax, 4C01h
        int     21h
 
mes_load        db 0dh, 0ah, "Load$"
mes_already     db "Already$"
mes_path        db 0dh, "Input:$"
mes_file_error  db 0ah, 0dh, "ERROR.", 0ah, 0dh, "$"
 
print_string proc
    
        mov     ah, 0Eh
   loop_print:
        mov     al, cs:[si]
        cmp     al, '$'
        je      end_print
        int     10h
        inc     si
        jmp     loop_print
 
   end_print:
 
 
        ret
print_string endp
 
code ends
end start
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
26.05.2014, 19:03
Ответы с готовыми решениями:

Не могу понять смысл задания
Определить тип заданных выражений и найти их значения. Составить систему тестов и вычислить...

Не могу понять смысл задачи
Create static method search(String data, String key), which returns amount of String key in data...

Не могу понять смысл задания.
День (утро, вечер, ночь - нужное подчеркнуть)) добрый! Взялся помочь человеку с контрольной по C и...

Не могу понять смысл исследования
Читаю исследование и ничего не могу понять. Статья называется Я перевожу это как: "Новое...

3
Нарушитель
Автор FAQ
15518 / 7340 / 960
Регистрация: 11.11.2010
Сообщений: 13,244
27.05.2014, 02:38 2
Мыша,
последняя страница FAQ для раздела Assembler, MASM, TASM раздел "Всё о резидентах", прочитай и сможешь разобраться в своей проблеме самостоятельно
0
4 / 4 / 2
Регистрация: 03.03.2011
Сообщений: 222
27.05.2014, 07:21  [ТС] 3
Цитата Сообщение от Mikl___ Посмотреть сообщение
Мыша,
последняя страница FAQ для раздела Assembler, MASM, TASM раздел "Всё о резидентах", прочитай и сможешь разобраться в своей проблеме самостоятельно
Дык я знаю, как они работают. Я не могу понять, как в этом резиденте все происходит. Там есть некоторые функции, которые я не нашел, что делают.
0
Нарушитель
Автор FAQ
15518 / 7340 / 960
Регистрация: 11.11.2010
Сообщений: 13,244
27.05.2014, 08:16 4
Цитата Сообщение от Мыша Посмотреть сообщение
Там есть некоторые функции, которые я не нашел, что делают
А тебе не кажется, что можно показать эти "некоторые функции" и кто-нибудь ответит на твой вопрос? Хорошо поставленный вопрос уже содержит в себе часть ответа
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
27.05.2014, 08:16
Помогаю со студенческими работами здесь

Не могу понять смысл предложения из документации
str.isalpha() Return true if all characters in the string are alphabetic and there is at least one...

Не могу понять смысл задания на C#/Unity
На олимпиаде по VR задали задание на языке C# (который я не знаю). Вот ссылка на само задание....

Не могу понять смысл понятия двойственного графа
Не могу понять смысл данного понятия. Можете объяснить на каком нибудь простом примере?

Не могу понять смысл данного задания, и написание его кода
В одномерном массиве все отрицательные элементы переместить в начало массива, а остальные — в конец...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2022, CyberForum.ru