Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 25.05.2009, 17:46   #1
FARRIAN
 
Регистрация: 25.05.2009
Сообщений: 8
По умолчанию Собственное прерывание на ассемблере 2

ребят, помогите плз, нужно сделать собственное прерывание при помощи int 23h, чтобы прерывание происходило после нажатия ctrl+c, и выдавался звуковой сигнал (печать символа с кодом 07h),
вот код:

Код:
Stk SEGMENT STACK
DB 256 DUP(?)
Stk ENDS

DATA SEGMENT
KEEP_CS DW 0 ; для хранения сегмента
KEEP_IP DW 0 ; и смещения прерывания
DATA ENDS


CODE SEGMENT
ASSUME CS:CODE, DS:DATA, SS:Stk

rout proc far ;начало процедуры
push ax ;сохраняем все изменяемые регистры
push dx ;сохраняем все изменяемые регистры

mov ah,07h;выдача звукового сигнала
int 21h;но я не уверен что правильно

pop dx ;восстанавливаем регистры
pop ax ;восстанавливаем регистры

mov al,20h
out 20h,al
iret ;конец прерывания
rout endp ;конец процедуры



main proc far
push ds
sub ax,ax
push ax
mov ax,data
mov ds,ax


MOV AH, 35H ; функция получения вектора
MOV AL, 1CH ; номер вектора
INT 21H
MOV KEEP_IP, BX ; запоминание смещения
MOV KEEP_CS, ES ; и сегмента

push ds
mov dx,offset rout

mov ax,seg rout ;cs ;сегмент процедуры
mov ds,ax ;помещаем в ds
mov ah,25h ;функция установки вектора
mov al,60h ;номер вектора
int 21h ;меняем прерывание

pop ds ;восстанавливаем ds

int 23h ;наше прерывание

CLI
PUSH DS
MOV DX, KEEP_IP
MOV AX, KEEP_CS
MOV DS, AX
MOV AH, 25H
MOV AL, 1CH
INT 21H ; восстанавливаем вектор
POP DS
STI


ret
Main endp
code ends
end Main

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

Последний раз редактировалось FARRIAN; 25.05.2009 в 20:45.
FARRIAN вне форума Ответить с цитированием
Старый 25.05.2009, 23:12   #2
FARRIAN
 
Регистрация: 25.05.2009
Сообщений: 8
По умолчанию

случайно 2 темы сделал, если кто сможет помочь, то заходите сюда
http://programmersforum.ru/showthrea...d=1#post273191
FARRIAN вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сделать собственное прерывание при помощи int 23h FARRIAN Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 10 29.05.2009 16:28
Собственное прерывание на Ассемблере ViNcHeStEr Помощь студентам 9 16.05.2009 15:16
Собственное значение матриц. Mixasik Помощь студентам 2 18.10.2008 21:30