![]() |
|
|
![]()
|
|
| Dr.Drunk |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 179 Регистрация: 12.1.2004 Где: Волжский Репутация: нет Всего: нет |
Народ, помогите, кто знает.
Надо переопределить обработчик нажатия Ctrl-Break делаю вот так: .model small .486 .data str1 db "Нажмите Ctrl+Break",10,13,'$' str2 db "Для выхода нажмите Esc",10,13,'$' str3 db "Opss",10,13,'$' x1 dw 0 .stack 100h .code ... mov ax, 2523h mov dx, offset mes int 21h .... mov ax,0003h int 10h mov ah,09h lea dx,str1 int 21h mov ah,09h lea dx,str2 int 21h cmd_op: mov ah, 10h int 16h cmp al,1bh je cmd_ex jmp cmd_op cmd_ex: ... mes proc pusha m1: mov ah,09h lea dx,str3 int 21h mov ah, 0bh int 21h cmp al,0ffh jne m1 popa iret endp В результате на Win 2k и XP управление просто не передается процедуре mes А в win9x генерит ошибку "Программа выполнила недопустимую инструкцию по адресу 0000:0056" --------------------
_Theory_ is when you know everything but nothning works._Practice_ is when everything works but no one knows why._IN THIS PLACE_ we're combining theory and practice -nothing works and no one knows why! |
|||
|
||||
| p0s0l |
|
||||
![]() Г-н Посол ![]() ![]() ![]() ![]() Профиль Группа: Экс. модератор Сообщений: 3668 Регистрация: 13.7.2003 Где: 58°38' с.ш. 4 9°41' в.д. Репутация: 2 Всего: 112 |
Проблема в том, что надо, чтобы адрес ППОП был в DS:DX, а у тебя в CS:DX...
Т.е. либо засунь в ds значение cs перед вызовом 25h, либо делай все в одном сегменте (модель tiny). И еще: Ctrl-Break-прерывание - это 1Bh, а не 23h... Вот тебе оба варианта:
-------------------- С уважением, г-н Посол. |
||||
|
|||||
| Serzh |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 155 Регистрация: 30.9.2003 Где: SPb Репутация: нет Всего: нет |
а еще было бы не плохо запоминать старый обработчик Ctrl-Break.
не помню какая функция, но вроде 35h. |
|||
|
||||
| Dr.Drunk |
|
||||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 179 Регистрация: 12.1.2004 Где: Волжский Репутация: нет Всего: нет |
Спасибо, что просветили, а то я всю голову сломал, самое обидное что уменя в доках было написано что обработчиком Ctrl-Break является именно 23h, это уже потом я нашел про 1Bh, но когда я его попытался переопределить то при запуске в режиме из под доси машина вешалась наглухо
по поводу запоминания старого обработчика, дело хорошое, но в той же справке написано, что процесс который запускает прогу, сам по ее завершению возвращает старый обработчик, но я пока не проверял данного утверждения Это сообщение отредактировал(а) Dr.Drunk - 27.1.2004, 07:55 --------------------
_Theory_ is when you know everything but nothning works._Practice_ is when everything works but no one knows why._IN THIS PLACE_ we're combining theory and practice -nothing works and no one knows why! |
||||
|
|||||
![]()
|
| Правила форума "Asm: Общие вопросы" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, MAKCim. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Asm: Общие вопросы | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |