Форум программистов, компьютерный форум, киберфорум
Assembler: DOS/Real Mode/16-bits
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
0 / 0 / 0
Регистрация: 04.04.2013
Сообщений: 4

Резидентная программа

13.04.2013, 15:20. Показов 1625. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Уже несколько дней бьюсь, чтобы ее сделать резидентной. Здесь только код программы, который должен стать резидентным. Сколько не читаю, а все не прихожу к просветлению.
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
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
code    segment para 'code' 
    assume  cs:code,ds:code,ss:code,es:code
 
org 100h
START:
        PUSH CS   
        POP DS     
        PUSH DS
        POP ES
        PUSH AX
        POP AX
 
call CLRSCR
 mov     dx, offset Help
            mov     ah, 9
            int     21h
 
F6:
        xor ax,ax
        mov ah, 08h
        int 21h
        mov ah, 08h
        int 21h
        cmp al,64
        je  _F6
        cmp al,65
        je  Ekursiv
        cmp al,66
        je  _F8
        cmp al,67
        je  _F9
        cmp al,62
        je  _vi
    jmp Start
 
        
 
 
_F8:
jmp makeput
_F6:
jmp _Timer
_F9:
jmp Vvod123
_vi:
mov al, 0
mov ah, 4ch
int 21h
 
    
 
;_____________________________________________________________________
    Ekursiv:
      VvodE:
        CALL CRLF
        MOV DX, OFFSET EnterE     
        MOV AH, 9
        INT 21H
        CALL CRLF
        MOV BP,0
        call getch
        cmp Al, 'E'
        je DoKursiv
        cmp al, '1'
        je START
        jmp Vvode
 
      DoKursiv:
        call crlf
        xor AX, AX
        mov AX,seg Ekurs
        mov ES,AX 
        mov BP,offset Ekurs 
        mov BH, 8 
        mov BL,0 
        mov CX,1 
        mov DX,133 
        int 10h 
 
        ;Зададим видеорежим (80х25, 16\8)
        mov ah, 00h
        mov al, 3
        int 10h      
            mov     bx, 1000h
            mov     ax, 1100h
            int     10h
            mov     dx, offset string
            mov     ah, 9
            int     21h
        
        ;Пауза до нажатия клавиши
        xor ax,ax
        mov ah, 08h
        int 21h
        mov ah, 08h
        int 21h
        cmp al,65
        je obr
        jmp Start
 
obr:
    xor ax,ax
      Call clrscr
        
        xor AX, AX
        mov AX,seg Enorm
        mov ES,AX 
        mov BP,offset Enorm 
        mov BH, 8 
        mov BL,0 
        mov CX,1 
        mov DX,133 
        int 10h 
;/////////
mov ah, 00h
        mov al, 3
        int 10h      
            mov     bx, 1000h
            mov     ax, 1100h
            int     10h
 
mov     dx, offset string
            mov     ah, 9
            int     21h
           xor ax,ax
        mov ah, 08h
        int 21h
        mov ah, 08h
        int 21h
        cmp al,65
        je Dokursiv
jmp Start
;___________________________________________________________
 
    Vvod123:
    CALL CRLF
        MOV DX, OFFSET Message1     
        MOV AH, 9
        INT 21H
    _Zamena:
        mov ah, 8
        int 21h
        cmp al, '0'
        jnl modzv
    prod:
        cmp al, '$'
        je rev
        mov dl, al
        call putch
        jmp _Zamena
        
        modzv:
        cmp al, '9'
        jg prod
        mov dl, '*'
        call putch
        jmp _zamena
        
rev:
        mov dl, al
        mov ah, 09h
        int 21h
        mov ah, 08h
        int 21h
        mov ah, 08h
        int 21h
        cmp al,67
        jne start2
        call crlf
        MOV DX, OFFSET Message1     
        MOV AH, 9
        INT 21H
norm:
        call getch
        cmp al, '$'
        jne norm
        mov ah, 08h
        int 21h
        mov ah, 08h
        int 21h
        cmp al,67
        jne start2
    jmp Vvod123
        
start2:
jmp start
;___________________________________________________________________________________
 
 
    makeput:
        
        MOV DX, OFFSET Message1     
        MOV AH, 9
        INT 21H
        
 
    make:
        mov ah, 8
        int 21h
        cmp al, 'M'
        je make_b
        cmp al, '}'
        je make_tv
        cmp al, 'S'
        je make_bl
        cmp al, '"'
        je make_E
        cmp al, '>'
        je make_yu
        cmp al, 'Z'
        je make_9
 
        cmp al, 'm'
        je make_b
        cmp al, ']'
        je make_tv
        cmp al, 's'
        je make_bl
        cmp al, "'"
        je make_E
        cmp al, '.'
        je make_yu
        cmp al, 'z'
        je make_9
        cmp al, '$'
        je _obr
        mov dl, al
        call putch
        jmp make
 
        make_b:
        mov al, 'Ь'
        mov dl, 'Ь'
        call putch 
        jmp make
 
        
        make_tv:
        
        mov al, 'Ъ'
        mov dl, 'Ъ'
        call putch
        jmp make
 
 
        make_bl:
        
        mov al, 'Ы'
        mov dl, 'Ы'
        call putch
        jmp make
 
    start1:
    jmp start       
 
        make_E:     
        mov al, 'Э'
        mov dl, 'Э'
        call putch
        jmp make
 
        
        make_yu:
        
        mov al, 'Ю'
        mov dl, 'Ю'
        call putch
        jmp make
 
        
        make_9:
        
        mov al, 'Я'
        mov dl, 'Я'
        call putch
        jmp make
 
        
 
 
_obr:
        mov dl, al
        call putch
        mov ah, 08h
        int 21h
        mov ah, 08h
        int 21h
        cmp al,66
        jne Start1
        call crlf
        MOV DX, OFFSET Message1     
        MOV AH, 9
        INT 21H
        jmp retur
        
retur:
call getch
cmp AL, '$'
jne retur
mov dl, al
MOV AH, 9
INT 21H
xor ax, ax
mov ah, 08h
int 21H
mov ah, 08h
int 21h
cmp al, 66
je make1
jmp start1
 
make1:
call crlf
jmp makeput
;______________________________________________________________________________
 
 
_Timer:
    Xor ax,ax
        ;---получение значения счетчика и установка задержки
            MOV   AH,0   ;номер функции для "чтения"
           INT   1AH    ;получаем значение счетчика
           ADD   DX,127  ;добавляем 7 сек. к младшему слову
           MOV   BX,DX  ;запоминаем требуемое значение в BX
;---постоянная проверка значения счетчика времени суток BIOS
_REPEAT:    INT   1AH    ;получаем значение счетчика
            CMP   DX,BX  ;сравниваем с искомым
            JNE   _REPEAT ;если неравен, то повторяем снова
                         ;иначе, задержка окончена
    
    ;   
   MOV  AH,2        ;номер функции
   MOV  BH,0        ;номер страницы
   MOV  DH,11      ;строка
   MOV  DL,20       ;столбец
   INT  10H         ;позиционируем курсор
 
    
    MOV DX, OFFSET Message3     
        MOV AH, 9
        INT 21H
 
;Пауза до нажатия клавиши
              mov ah, 08h
              int 21h
            mov ah, 08h
              int 21h
            cmp al, 64
            je star
        
star:       
jmp START
;_____________________________________________________________________________
 
    ENDPROGRAM: 
 
        
        ;Ожидание завершения программы
           ;MOV AH, 01H
           ;INT 21H
        ;Выход
           mov al, 0
           mov ah, 4ch
           int 21h
 
        ;Процедура вывода на экран символа
        PUTCH PROC   
          MOV AH, 02H
           INT 021H
         RET
        PUTCH ENDP 
 
        ;Процедура вывода на экран строки                                                         
        PUTSTR PROC   
          MOV AH, 09H
           INT 021H
         RET
        PUTSTR ENDP 
        
        ;Перевод на новую строку
        CRLF PROC
         MOV DL,10
         CALL PUTCH
         MOV DL, 13
         CALL PUTCH
         RET
        CRLF ENDP
 
        GETCH PROC
         MOV AH, 01H
         INT 21H
         RET
        GETCH ENDP
        
        CLRSCR PROC
         MOV AX, 03
         INT 10H
         RET
        CLRSCR ENDP
 
help_info db  'F4- Выход', 10, 13, 'F6- Вывод ФИО и № варианта через 7 секунд в центр экрана ', 10, 13, 'F7- Перевод буквы Е в курсив', 10, 13, 'F8- Русификация букв ЪЫЬЭЮЯ', 10, 13, 'F9- Замена цифр на *', 10, 13
BOX DB 255 dup('$')
MESSAGE1 DB 'Введите строку:$'
MESSAGE3 DB 'Вариант №2$'
EnterE db 'Введите букву Е$'
string  db  'Е$'
Ekurs   db 00000000B
    db 00000000B
    db 00000000B
    db 00000000B
    db 00111111B
    db 00100000B
    db 00100000B
    db 00100000B
    db 01111110B
    db 01000000B
    db 01000000B
    db 01000000B
    db 11111100B
    db 00000000B
    db 00000000B
    db 00000000B
    db 00000000B
 
Enorm   db 00000000B
    db 00000000B
    db 00000000B
    db 00000000B
    db 11111100B
    db 10000000B
    db 10000000B
    db 10000000B
    db 11111100B
    db 10000000B
    db 10000000B
    db 10000000B
    db 11111100B
    db 00000000B
    db 00000000B
    db 00000000B
    db 00000000B
 
code ends
end START
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
13.04.2013, 15:20
Ответы с готовыми решениями:

Резидентная программа для вывода числа из регистра AX на экран
Необходимо создать резидентную программу для вывода числа из регистра AX на экран. Она должна вызваться из выполняемой программы из которой...

Резидентная программа EXE
Здравствуйте! Прошу помощи, на просторах интернета нахожу только резидентные программы model tiny .COM. Мне нужно написать резидентную...

Резидентная программа вывода времени
Хотелось бы рассмотреть резидентные программы на деле. Искал резидентную программу (запускаемую под dosBox), которая будет по нажатию...

1
 Аватар для TheFox
131 / 67 / 10
Регистрация: 13.05.2013
Сообщений: 437
13.05.2013, 12:16
Даже не знаю, что же ты там читаешь такое? Чтобы сделать резидентной com-программу достаточно:
1. Установить вектор прерывания по которому ты будешь ее вызывать
2. Завершить com-программу прерыванием 27H а не 4ch 21-го прерывания.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
13.05.2013, 12:16
Помогаю со студенческими работами здесь

Нужна рабочая резидентная программа
Кто может скиньте код резидентной программы по ассемблеру) Желательно с комментами, но если без них тоже пойдёт) заранее спасибо)

Резидентная программа, которая сортирует введенные из текстового файла имена по алфавиту
Составить резидентную программу, которая сортирует введенные из текстового файла имена по алфавиту. Имена расположены в произвольном...

Резидентная программа эмулирующая ввод символа 'Q' каждые пол-минуты
Подскажите , хотя бы на маленьком примере , что нужно сделать,для того чтобы обычная программа стала резидентной?

Резидентная программа - напоминание
Здравствуйте! Мне надо написать резидентную программу, которая будет выводить сообщение в определенный день недели и время. Ввод...

Резидентная программа.Возврат на консоль.
Доброго времени суток... Может кто подскажет или у кого-нибудь есть подходяший пример ... При написании резедентной программы возникла...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru