C/Visual C - ayuda con getVect y SetVect

 
Vista:

ayuda con getVect y SetVect

Publicado por Carlos (1 intervención) el 01/09/2006 19:40:28
Hola a todos! quisisera saber si pueden hecharme una mano.
Me pidieron un programa que interceptara la interrupcion de la division por cero (p.e: 7/0) y en lugar de que se terminara, me escribiera un mensaje y continuara.

Yo lo que hice fue obtener en una variable la direccion del vector de interrupcion en la posicion 0 (getVect) y luego darle una nueva funcion para esa interrupcion que se encargue de escribir el letrero (SetVect).

Cuando se ejecuta el programa con valores normales, funciona bien la division, (3/4, 1/2, etc.) y cuando se lanza la interrupcion, se llama correctamente a la funcion (que solo tiene un printf), pero se cicla mi programa. Esto es, no retorna al main ni nada por el estilo.

Les pongo mi codigo para ver si pueden hecharme una mano.

#include<stdio.h>
#include<dos.h>
#include<conio.h>
#include<stdlib.h>

void interrupt (*vieja_0)(...);
void interrupt nueva_0(...) /* rutina de control de INT 0 */
{
printf("---Division Por Cero---");
}

int main()
{
int i=0;
vieja_0 = getvect(i); /* almacenar dirección de INT 0 (activada con Division Por Cero) */
printf("Direccion Antigua: %Fp",vieja_0);
setvect(0,nueva_0);
printf("\nInterrupcion 0 cambiada");
int a,b;
printf("\nLee primer dato: ");
scanf("%d",&a);
printf("\nLee sgundo dato: ");
scanf("%d",&b);
printf("\nProcesando\n");
a=a/b;
printf("%d",a);
setvect (0, vieja_rutina); /* restaurar rutina inicial de INT 0 */
getch();
return 0;
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder