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

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

Вернуться   Форум программистов > Низкоуровневое программирование > Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 09.05.2011, 15:24   #1
Сметуська
 
Регистрация: 14.03.2011
Сообщений: 5
По умолчанию Обработчик прерывании

Всем здрасте. В общем есть маленькая недароботка, дело в том что мой резидент после определенного интервала времени должен загрузить сообщение и вывести его на экран, но его не выводить, немогу понять где ошибка
Код:
code segment
assume cs:code , ds:code
	org 100h
start:
	jmp load
	old_timer dd 0
	msg_time db 'Задайте интервал времени:$'
	msg db 'Вам пришло сообщение. Прочесть?(y/n)$'
	msg1 db 'Ваше сообщение: Скоро Лето!!!$'
	msg2 db 'Удаление Вашего сообщения успешно проведено!$'

	Sec dw 0

off proc

push ds
push es
push dx
mov ax,2508h
lds dx, cs:old_timer
int 21h
mov es,cs:2ch
mov ah,49h
int 21h
pop dx
pop es
pop ds
ret
off endp


timer_proc proc
	pushf			;сохранение флагов в стеке
	call cs:old_timer	;вызов старого обработчика
	push ax			;сохранение используемых регистров
	push bx
	push dx
	push es
	push di
	push si
	push ds
	push cs
	pop ds

	mov ax,sec
	cmp ax,0
	jne exit

	mov ax,0B80h
	mov es,ax
	xor di,di
	xor bx,bx
	mov ah,0Eh

c1:
	mov al,msg[bx]
	stosw
	inc bx
	cmp msg[bx],'$'
	jne c1

	mov ah,00h
	int 16h
	cmp al,'y'
	jne nnnn
	
	mov ax,0B800h
	mov es,ax
	xor di,di
	xor bx,bx
	mov ah,0Eh

c2:
	mov al,msg1[bx]
	stosw
	inc bx
	cmp msg1[bx],'$'
	jne c2

nnnn:
	cmp al,'n'
	jne exit
	mov ax,0B800h
	mov es,ax
	xor di,di
	xor bx,bx
	mov ah,0Eh

c3:
	mov al,msg2[bx]
	stosw
	inc bx
	cmp msg2[bx],'$'
	jne c3

k:

	cmp al,'l'
	jne exit
	call off
	mov ax,4c00h
	int 21h
exit:
	dec sec

exit2:
	pop ds
	pop si
	pop di
	pop es
	pop dx
	pop bx
	pop ax
	iret
timer_proc endp

kon:
;инициализация
load:
	mov ah,09h
	lea dx,msg_time
	int 21h
;ввод времени
	mov ah,01h
	int 21h
	mov bl,al
	int 21h
	xchg al,bl
	sub al,30h
	sub bl,30h
	mov cl,10
	mul cl
	add al,bl
	mov cl,18
	mul cl
	mov sec,ax
;получение вектора прерываний таймера
	mov ax,3508h
	int 21h
	mov word ptr old_timer,bx
	mov word ptr old_timer+2,es
;установка нового вектора прерываний систменого таймера
	mov ax,2508h
	mov dx,offset timer_proc
	int 21h
;резидентное завершение программы
	mov ah,31h
	mov dx,(kon - start+10Fh)/16
	int 21h
code ends
end start

Последний раз редактировалось Сметуська; 09.05.2011 в 15:43.
Сметуська вне форума Ответить с цитированием
Старый 10.05.2011, 14:10   #2
Сметуська
 
Регистрация: 14.03.2011
Сообщений: 5
По умолчанию

ну может быть кто нить посмотреть хоть одним глазком))
Сметуська вне форума Ответить с цитированием
Старый 13.05.2011, 13:28   #3
UsamaBenLadan
Пользователь
 
Аватар для UsamaBenLadan
 
Регистрация: 01.05.2011
Сообщений: 23
По умолчанию

Понятно - что работает как надо это только в "голом" DOS'e.
Вложения
Тип файла: zip resid.zip (1.5 Кб, 7 просмотров)
UsamaBenLadan вне форума Ответить с цитированием
Старый 14.05.2011, 23:05   #4
Сметуська
 
Регистрация: 14.03.2011
Сообщений: 5
По умолчанию

Посмотрела я ваши исправления, многое оказалось в комментах, как раз таки без чего программа и не работает, и кстати да, там тоже нашла опечатку насчет
Код:
mov ax,0B800h
это помогло, программа работает, но резидент зависает после того как нужно сделать выгрузку, тобишь по моему примеру это "Ваше сообщение удалено"
Сметуська вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Обработчик ошибок. DennerV Общие вопросы Delphi 11 12.08.2010 14:05
Клавиатурный обработчик. Shub_Niggurath Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 1 16.06.2010 22:47
Обработчик клавиатуры Raven77 Assembler - Ассемблер (FASM, MASM, WASM, NASM, GoASM, Gas, RosAsm, HLA) и не рекомендуем TASM 2 28.09.2009 09:04
Обработчик события... Flash_ Gamedev - cоздание игр: Unity, OpenGL, DirectX 12 12.03.2007 21:24