Форум программистов, компьютерный форум, киберфорум
Assembler, MASM, TASM
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/18: Рейтинг темы: голосов - 18, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 29

Выход из резидентной программы или выгрузка ее из памяти

22.12.2013, 18:16. Показов 3662. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я уже сюда не раз писал насчет резидентной программы. Многие помогли) Большое все спасибо)

У меня есть программа, загружаемая резидентно в память ПК и осуществляющая перехват прерывания INT09h, анализирующая нажатие пользователем комбинации клавиш, в случае нажатия комбинации Alt-A выполнять слияние двух файлов.

Помогите сделать выход из резидентной программы или сделать выгрузку ее из памяти.

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
.model tiny
.code
.286
 
org 1eh
org 1ch
envseg dw ?
org 100h
 
start:
    jmp init
 
int09h_handler proc far
    jmp short actual_int09h_handler
old_int09h  dd ?
        dw 424Bh
        db 00h
actual_int09h_handler:
    pushf
    call dword ptr cs:old_int09h
disable_point label byte
    pusha
    push ds
    push es
    cld
    push 0B800h
    pop es
    push 0040h
    pop ds
    mov di, word ptr ds:001Ch
    jne l1
    jmp exit
    l1:
mov ax, word ptr [di]
 
No_ext:
    mov ah,10h  ;ожидание нажатия клавиши от пользователя
    int 16h     ;(в ah=0, если расширенный, в al=расширенный код)
    cmp al,0    ;проверка на расширенный код
    jnz No_ext  ;если не расширенный код, то переход к No_ext
    cmp ah,1eh  ;расширенный код Alt+a(в ah );
push cs
pop ds
    je Alt_a    ;если да(Alt+a), то переход к Alt_a:
    jne re
        jmp exit
        re: ;иначе на старый вектор
 
Alt_a proc near
 
    ;открываем первый файл
    MOV AH,3DH
    MOV AL,0
    LEA DX,PATH1
    INT 21H
    JC CLOSE2
    MOV HANDL1,AX
;открываем второй файл
    MOV AH,3DH
    MOV AL,1
    LEA DX,PATH2
    INT 21H
    JC CLOSE1
    MOV HANDL2,AX
;указатель второго файла на конец
    MOV AH,42H
    MOV BX,HANDL2
    XOR CX,CX
    XOR DX,DX
    MOV AL,2
    INT 21H
;готовим регистры
   LEA DX,BUFER
   MOV CX,1000
;блок копирования
LOO: 
;читаем 
   MOV BX,HANDL1
   MOV AH,3FH
   INT 21H
   CMP AX,CX
   JZ NORM
   MOV CX,AX ;<1000 байт
   MOV  EOF,1 ;достигнут конец файла
  NORM:
;пишем
  MOV BX,HANDL2
  MOV AH,40H
  INT 21H
  CMP EOF,0 ; не достигнут ли конец
  JZ LOO
 ; закрываем второй файл 
CLOSE2:
   MOV AH,3EH
   MOV BX,HANDL2
   INT 21H
 ;закрываем первый файл
CLOSE1:
   MOV AH,3EH
   MOV BX,HANDL1
   INT 21H
    ;выход в ДОС
 
EXIT1:
  MOV Ax,4C00H
  INT 21H
 
 
Alt_a endp
 
int09h_handler endp
 
exit:
    pop es
    pop ds
    popa    
    iret
    
init proc near
 
    mov ax,3509h; получим адрес обработчика прерывания 
    int 21h
    mov word ptr old_int09h,bx
    mov word ptr old_int09h+2,es
 
 
    mov ax,2509h; установим адрес нового обработчика
    mov dx, offset int09h_handler
    int 21h
 
    mov ah,49h
    mov es, word ptr envseg
    int 21h
 
    mov dx, offset init
 
    mov ah,09h
    mov dx,offset mes_l
    int 21h
 
    int 27h 
 
 
    
ret
 
 
buf  db 1 dup (?)
PATH1 DB 'PRIMER1.TXT',0;имя первого файла
PATH2 DB 'PRIMER2.TXT',0;имя второго файла(куда добавлять)
HANDL1 DW ?             ;описатель первого файла  
HANDL2 DW ?             ;описатель второго файла
BUFER  DB 1000 DUP(?)   ;буфер
EOF DB 0                ;если 1,то в процессе чтения 
            ;достигнут конец файла
mes_l   db 'Rezident zagruzhen',0Dh,0Ah,'$'
mes     db 'Rezident vygruzhen',0Dh,0Ah,'$'
 
init endp
 
end start
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
22.12.2013, 18:16
Ответы с готовыми решениями:

Выгрузка из стека в ячейку резидентной памяти данных
Помогите с пожалуйста заданием, выполнить команду письменно.

Выгрузка резидентной программы
помогите написать выгрузку программы(код представлен), обычные часы.. надо сделать чтоб или от клавиши или от повторного запуска файла она...

Выгрузка программы из памяти
Прошу помочь в решении след.вопроса: Программа резидентом сидит в памяти. Как при выключении ПК в W-9x дать команду программе выгрузиться...

7
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
22.12.2013, 20:50
F1 - выгрузка из памяти (3bh)
1
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 29
23.12.2013, 15:24  [ТС]
Цитата Сообщение от AFP Посмотреть сообщение
Не помогло( резидент все равно не выгруэается
0
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
28.12.2013, 05:02
Корректная выгрузка резидента из памяти - очень неочевидное дело. Проще деактивировать его (чтобы он ничего значимого не делал) и оставить в памяти как хлам.

Когда-то давно, помню, для выгрузки резидентов из памяти MS-DOS использовалась утитилка RELEASE. Но у меня такой не сохранилось.
1
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
28.12.2013, 05:17
Еще помню Volkov Commander, если его завершить, все запущенные из под него резиденты выгружал. А Norton Commander не выгружал.
1
650 / 337 / 37
Регистрация: 04.04.2012
Сообщений: 886
29.12.2013, 19:17
Еще у Volkov Commander (VC) Alt+F5 показывает загруженные программы и удаляет те, что загружены из VC.
1
0 / 0 / 0
Регистрация: 02.11.2011
Сообщений: 29
18.01.2014, 15:40  [ТС]
чтобы я не делал, выгрузка не происходит
0
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
18.01.2014, 17:34
Косtян, вотъ.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
18.01.2014, 17:34
Помогаю со студенческими работами здесь

Выгрузка из памяти (Закрытие программы)
ПАМАГИТЯ!!!! Как сделать так чтобы при нажатии на крестик(выход) появлялась другая форма а само приложение не выгружалось!

Загрузка и выгрузка программы из оперативной памяти
Пишу программу ... не важно что она будет делать , я пока не могу просто сделать бонально загрузку и выгрузку программы из оперативной...

Выход из программы при нажатии кнопки или клавиши
Подскажите пожалуйста, как сделать так чтобы при нажатии кнопки программа закрывалась, чтобы каждый раз не нажимать Programm reset

запуск резидентной программы
Не могу запустить резидентную программу. Исходник рабочий,озвучка нажатий клавишь, скомпилировал, создал exe файл, запустил с командной...

Реализация резидентной программы...
Задача проста - на нажатие клавишы генерируется звуковой сигнал, но программа должна быть резидентной. Со вторым пунктом возникла одна...


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

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru