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

Обработчик прерываний

16.01.2014, 22:45. Показов 2167. Ответов 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
.model small
.stack 100h
.code
.186 
start:
    jmp init
    
int09h_handler proc  far
    jmp work
    
    old_int09h dd 0
 
work:
    pusha
    push ds
    push es
 
    pushf
    mov ax, cs:trigger
    not ax
    mov trigger, ax
    cmp ax, 0
    je label12
    call dword ptr cs:old_int09h
label12:
    cld
    push 0B800h
    pop es
    push 0040h
    pop ds
    
    
    mov di, word ptr ds:001Ah
 
    cmp di, word ptr ds:001Ch
    je exit_09handler
 
    mov ax,word ptr [di]
    
exit_09handler:
    pop es
    pop ds
    popa
    iret
int09h_handler  endp
 
int21h_handler proc far
    cmp ax, 7200h
    jne default21h
    mov ah, 123
    iret
    default21h:
        jmp cs:old_int21h
    old_int21h dd 0
int21h_handler  endp    
 
init proc
    ;check if handler has already installed
    mov ah, 72h
    int 21h
    cmp ah, 123
    je installed 
    ;if not installed
    ;install 09h handler
    push cs
    pop ds 
    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
    ;install 21h handler
    mov ax, 3521h                   
    int 21h
    mov word ptr old_int21h,  bx     
    mov word ptr old_int21h + 2,  es 
    mov ax, 2521h 
    mov dx, offset int21h_handler
    int 21h
    ;print message
    mov ax, @data
    mov ds, ax
    lea dx, msg_ready
    mov ah, 9
    int 21h
    ;keep code in memory
    mov dx, (init - start + 10Fh)/16
    mov ax, 3100h
    int 21h
;===================================
    ;if handler already installed
    installed:
    cmp byte ptr ds:[80h], 3
    jne print_already
    cmp byte ptr ds:[82h], '\'
    jne print_already
    cmp byte ptr ds:[83h], 'q'
    jne print_already
    ;delete handlers
    mov ax, 3509h
    int 21h
    cli
    mov dx, word ptr es:old_int09h + 2
    mov ds, dx
    mov dx, word ptr es:old_int09h
    mov ah, 25h
    int 21h
    mov al, 21h
    mov dx, word ptr es:old_int21h + 2 
    mov ds, dx
    mov dx, word ptr es:old_int21h
    int 21h 
    sti
    mov ah, 49h
    int 21h
    jmp print_deleted
;=======================
    print_already:
    mov ax, @data
    mov ds, ax
    lea dx, msg_already
    mov ah, 9h
    int 21h
    mov ax, 4C00h
    int 21h
    
    print_deleted:
    mov ax, @data
    mov ds, ax
    lea dx, msg_deleted
    mov ah, 9h
    int 21h
    mov ax, 4C00h
    int 21h
init endp   
.data
    trigger dw 1
    msg_ready db "Resident is in the memory", 24h
    msg_already db "Resident already is in the memory", 24h
    msg_deleted db "Resident deleted from memory", 24h
end start
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
16.01.2014, 22:45
Ответы с готовыми решениями:

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

обработчик прерываний
Скопировал обработчик прерывания с Калашникова, а он не работает. В чом проблема??? (работаю в выне)

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

3
Клюг
 Аватар для Charles Kludge
7677 / 3192 / 382
Регистрация: 03.05.2011
Сообщений: 8,380
17.01.2014, 00:02
Цитата Сообщение от teufel Посмотреть сообщение
call dword ptr cs:old_int09h
Стр. 24 - а не jmp far ptr cs:old_int09h ?
0
0 / 0 / 0
Регистрация: 07.10.2013
Сообщений: 2
17.01.2014, 00:09  [ТС]
Цитата Сообщение от Charles Kludge Посмотреть сообщение
Стр. 24 - а не jmp far ptr cs:old_int09h ?
нет, не помогло
0
 Аватар для Ethereal
6773 / 2741 / 385
Регистрация: 17.02.2013
Сообщений: 4,048
17.01.2014, 10:30
Нет, здесь имелся ввиду именно call dword ptr cs:old_int09h. Да только с использованием стека ошибка. Если call dword ptr cs:old_int09h выполняется, то флаги помещенные в стек по pushf идут в дело, а если call dword ptr cs:old_int09h обходится прыжком на label12, то эти флаги в стеке оказываются ни к селу ни к городу и возврат по iret происходит черте куда.

Добавлено через 1 минуту
pushf из 18-й строки переставь, чтобы он стоял непосредственно перед call dword ptr cs:old_int09h

Добавлено через 3 минуты
И еще - если аппаратное прерывание от клавиатуры ты не передаешь на обработку BIOS-у и решаешь сам его обработать, то значит надо обработать. Контроллеру прерываний нужно сказать, что прерывание обработано, чтобы он снял запрос. В порты ввода-вывода кое-что запихать.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
17.01.2014, 10:30
Помогаю со студенческими работами здесь

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

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

обработчик прерываний. циклическая замена пробела
имеется обработчик int 9hно он не работает точнее он работает, но не так как надо. прога должна заменять пробел на цифры от 0 до 9...

Дизассемблировать Обработчик прерываний Bios для клавиатуры
В университете задали задание вытащить программу базового обработчика прерываний BIOS для клавиатуры(09H) Сказали использовать пакет...

Написать резидентную программу, которая оставляет в памяти только пользовательский обработчик прерываний
Здраствуйте, помогите мне плиз) Задача такая: написать резидентную программу, которая оставляет в памяти только мной созданный обработчик...


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

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Новые блоги и статьи
Символьное дифференцирование
igorrr37 13.02.2026
/ * Программа принимает математическое выражение в виде строки и выдаёт его производную в виде строки и вычисляет значение производной при заданном х Логарифм записывается как: (x-2)log(x^2+2) -. . .
Камера 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 с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru