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

Обработка стандартных прерываний

06.02.2013, 15:00. Показов 1210. Ответов 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
    .model     small 
        .data
MESSAGE db  'Programma uje zagrujena',0DH, 0AH, '$'
COUNTER db  0
 
.stack     100h
.code
START:     JMP     BEGIN
 
              COUNT   dw  0
              PSP     dw  ?
              KEEP_CS DW 0 ; для хранения сегмента
              KEEP_IP DW 0 ; и смещения прерывания
              RSDNT   dw 0FFFFh
ROUT          PROC FAR
              push AX   ; сохранение изменяемых регистров
 
              cmp   COUNTER,0
              jne   nxt1
              mov   bl,4Eh              
              nxt1: cmp   COUNTER,10
              jne   nxt2
              mov   bl,0Eh 
              nxt2: inc COUNTER
              cmp   COUNTER,20
              jne   nxt3   
              mov   COUNTER,0           
 
              nxt3:
              call  outputBP
 
              mov   AX,COUNT
              mov   DL,100
              div   DL
              or    AL,30h
              mov   DL,16
              call  outputAL
 
              mov   AX,COUNT
              mov   DL,100
              div   DL
              mov   AL,AH 
              xor   AH,AH              
              mov   DL,10
              div   DL
              or    AL,30h
              mov   DL,17
              call  outputAL
 
              mov   AX,COUNT
              mov   DL,100
              div   DL
              mov   AL,AH 
              xor   AH,AH              
              mov   DL,10
              div   DL
              mov   AL,AH
              or    AL,30h
              mov   DL,18
              call  outputAL
 
              inc   COUNT
              cmp   COUNT,1000
              jne   nxt4
              mov   COUNT,0
 
              nxt4: pop  AX   ; восстановление регистров
 
              mov  AL, 20H
              out  20H,AL
              IRET
ROUT          ENDP
 
outputBP      PROC
 
 
              push cx
              push di
              push es
 
              mov bh,0  
              mov dh,0
              mov dl,0
              mov ah,03h
              int 10h
              push dx
 
              mov bh,0  
              mov dh,0
              mov dl,0
              mov ah,02h
              int 10h
 
              push ax
              push bx
              push dx
 
              pop   dx
              pop   bx
              pop   ax
 
              pop   dx
              mov   bh,0
              mov   ah,02h
              int   10h 
 
              pop   es
              pop   di
              pop   cx
 
              ret
outputBP      ENDP
 
outputAL      PROC
 
              push cx
              push di
              push es
              push dx
 
              mov  bh,0 
              mov  ah,03h
              int  10h
              mov  CX,DX
 
              pop  DX
              push CX
 
              mov  bh,0 
              mov  dh,0
              mov  ah,02h
              int  10h
 
              push ax
              push bx
              push dx
              push CX
 
              mov  ah,09h
              mov  bh,0 
              mov  cx,1
              int  10h  
 
              pop   CX
              pop   dx
              pop   bx
              pop   ax
 
              pop   dx
              mov   bh,0
              mov   ah,02h
              int   10h 
 
              pop   es
              pop   di
              pop   cx
 
              ret
outputAL      ENDP
 
 
BEGIN:
              mov   AX,ES
              mov   PSP,AX
 
              mov   DL,DS:[0080h]
              cmp   DL,0
              je    nxt 
 
              mov   SI, 0081h
  
              inc   SI
              mov   DL,DS:[SI]
              cmp   DL,'/'   
              jne   nxt
              inc   SI
              mov   DL,DS:[SI] 
              cmp   DL,'u' 
              jne   nxt   
              inc   SI
              mov   DL,DS:[SI] 
              cmp   DL,'n'      
              jne   nxt 
              jmp   unl
 
nxt:          mov   AX,@data
              mov   DS,AX
                  
              mov   AH, 35H   ; функция получения вектора
              mov   AL, 1CH   ; номер вектора
              int   21H
              mov   KEEP_IP, BX  ; запоминание смещения
              mov   KEEP_CS, ES  ; и сегмента      
 
              mov  dx,es:[bx-2]
              cmp  dx,0FFFFh
              je   msg     
 
              PUSH  DS
              MOV   DX, OFFSET ROUT ; смещение для процедуры в DX
              MOV   AX, SEG ROUT    ; сегмент процедуры
              MOV   DS, AX          ; помещаем в DS
              MOV   AH, 25H         ; функция установки вектора
              MOV   AL, 1CH         ; номер вектора
              INT   21H             ; меняем прерывание
              POP   DS
 
              mov   DX,50
              mov   AH,31h
              int   21h
 
unl:          CLI
              PUSH  DS
              mov   AH, 35H   ; функция получения вектора
              mov   AL, 1CH   ; номер вектора
              int   21H
              MOV   DX, es:[bx-4]
              MOV   AX, es:[bx-6]
              MOV   DS, AX
              MOV   AH, 25H
              MOV   AL, 1CH
              INT   21H 
              mov   AH,49h
              MOV   ES,ES:[BX-8]
              int   21h
              mov   AX,0
              MOV   ES:[BX-10],AX
              POP   DS
              STI
 
 
 
              jmp   ext         
msg:        lea   DX,MESSAGE
              push  AX
              mov   AH,09h
              int   21h
              pop   AX
   
ext:
              xor   AL,AL 
              mov   AH,4Ch 
              int   21h 
 
              END   START
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
06.02.2013, 15:00
Ответы с готовыми решениями:

Обработка программных прерываний...
Всем привет! выполняем лабораторные работы на MASMe, преподаватель дал задание, уже второй день не могу его расшифровать, если кто-нибудь...

Обработка исключений/прерываний в compatibility mode
Привет! Делаю обработку исключений для compatibility mode. Заметил странную вещь - если в дескрипторе шлюза прерывания писать селектор...

Перевод процессора в защищённый режим и обработка прерываний от таймера
Всем доброго времени суток. Дали лабу: Перевести процессор в защищённый режим и обработать прерывания от таймера. С переводом вроде как...

1
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
06.02.2013, 16:15
https://www.cyberforum.ru/asse... 72680.html
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
06.02.2013, 16:15
Помогаю со студенческими работами здесь

Обработка аппаратных прерываний по номеру IRQ
Здравствуйте! Подскажите пожалуйста ответ на вопрос:Как ОС различает когда несколько устройств используют один и тот же номер IRQ. Как...

Таблица прерываний в PM
Работает вот такая таблица! dd 0,0 ; 0 dw syscall_handler, 08h, 1000111000000000b, 0 ; 1 dd 0,0 ; 2 ...

обработчик прерываний
вообщем создал код обработчика прерываний,который должен менять последнюю строку 10-ю разными цветами.откомпилировал и етц.при открытии...

Обработчик прерываний
Необходимо сделать так, чтобы каждое второе нажатие игнорировалось. Почему то этого не происходит. Помогите кто может, очень срочно надо ...

Обработчик прерываний
Задача: написать обработчик прерываний, заменяющий вектор прерывания от часов (1СН) и выводящий на экран окно размером в целый экран,...


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
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 с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru