• Lunes 29 de Abril de 2024, 05:51

Autor Tema:  Instalar Rutina De Atencion De Interrupcion  (Leído 2268 veces)

ldt

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Instalar Rutina De Atencion De Interrupcion
« en: Lunes 23 de Mayo de 2005, 22:21 »
0
Hola, soy nuevo en esto de la programacion en ensamblador, y tengo varios problemas  :(

Necesito instalar una rutina de atención de interrupcion que haga la función de contador, es decir, que cada 4 segundos haga una interrupcion en el programa y llame a una subrutina. :P

Sinceramente, no tengo ni idea de como hacerlo, a ver si alguien me puede ayudar. :D

Gracias

CiRRuS

  • Miembro MUY activo
  • ***
  • Mensajes: 218
    • Ver Perfil
    • http://zirrus.es
Re: Instalar Rutina De Atencion De Interrupcion
« Respuesta #1 en: Martes 24 de Mayo de 2005, 13:54 »
0
Pos mira, eso lo tuve que hacer yo para unas practicas de programacion en sistemas operativos.

Para toquetear las rutinas de atencion a las interrupciones, deberas parchear la interrupcion que quieras toquetear. Es facil, la tabla de vectores de interrupcion esta al principio de la memoria (si si, en la posicion 0 para arriba). Asi que debes localizar la que haga referencia a la interrupcion de clock, haces que el sistema en vez de llamar a la interrupcion predeterminada, llame a la tuya, y por supuesto, al final de ejecutar la tuya, llamas a la predeterminada que si no, casca ;).

No se si me he explicado bien, pero para cualquier cosa ya sabes.

Por cierto, esa zona de memoria es MUY delicada, y los sistemas operativos no te van a dejar tocarla (no creo que windows te deje, y linux, menos). Yo todo lo que hice era bajo MS-DOS... Asi que te puedo hechar una mano segun el entorno en el que lo vayas a hacer. Para Windows y Linux... possss no se.

Nos vemos :hola:
Core Dumped
zirrus.es

ldt

  • Nuevo Miembro
  • *
  • Mensajes: 3
    • Ver Perfil
Re: Instalar Rutina De Atencion De Interrupcion
« Respuesta #2 en: Martes 24 de Mayo de 2005, 14:03 »
0
Hola Cirrus, ya dije que estaba verde en esto de programacion en ASM, pero veo que no llego ni al estado de verde, soy nulo  :whistling:
Lo que me has explicado, mas o menos lo entinedo, pero no tengo ni idea de como hacerlo. supongo lo primero de todo sera llamar a una subrutina que me "instale" el reloj, no? y que esta interrumpa la ejecuccion cada 4 segundos. O voy mu perdido

Nu se, no mentero de na, soy bastante nulo en esto.

A, el programa en teoria es para funcionar en MSdos, pero yo lo utilizo en el emulador de MSDOS del XP y de momento me tira bien  :P

CiRRuS

  • Miembro MUY activo
  • ***
  • Mensajes: 218
    • Ver Perfil
    • http://zirrus.es
Re: Instalar Rutina De Atencion De Interrupcion
« Respuesta #3 en: Jueves 26 de Mayo de 2005, 00:28 »
0
A ver, con paciencia, sientate y lee, intentare no ser pesado e ir siempre al grano.

No se si has dado algo de sistemas operativos, pero supongo que las rutinas de atencion a las interrupciones sabes de que van. Si trabajaras con MS-DOS perfecto! pq creo que lo que te voy a contar se ajustara a la realidad ;). MS-DOS tiene las direcciones que apuntan a las rutinas de atencion a la interrupcion en las primeras posiciones de memoria, es decir, que empiezan en la posicion 0 (si si, 0000:0000) de la memoria, a partir de ahi, se van listando (como un array) las direcciones. Hay interrupciones para atender el reloj, operaciones de entrada salida... Que son instaladas por el sistema operativo para tratar las interrupciones software (las interrupciones hardware son otra cosa).

Ahora lo que debes encontrar es qué posicion de memoria contiene la direccion a la rutina de atencion a la interrupcion del reloj. ¿Para que? Pues mira, tu deberas crear un programa que parchee esa direccion de memoria por la direccion de memoria donde tu hayas cargado tu programa. Asi, tu programa sera llamado cada vez que salte la interrupcion del reloj.

Sin embargo, no debes dejarlo ahi, pq la verdadera rutina de atencion a la interrupcion al reloj tb tiene que seguir siendo llamada, asi que debes preocuparte de que en tu rutina, cuando hayas acabado de hacer las cosas, llames a la rutina verdadera del sistema.

Cuando tengas hecho eso, que recomiendo que sea lo primero que hagas (solamente parchear y que tu rutina devuelva el control a la rutina verdadera), ya podras tirarle a tu codigo, podras hacer lo que quieras, contar las veces para hacer una cosa cada un cierto numero de veces, etc...

Espero haberme explicado bien, para cualquier cosa, ya sabes.

Nos vemos!
Core Dumped
zirrus.es

CiRRuS

  • Miembro MUY activo
  • ***
  • Mensajes: 218
    • Ver Perfil
    • http://zirrus.es
Re: Instalar Rutina De Atencion De Interrupcion
« Respuesta #4 en: Jueves 26 de Mayo de 2005, 00:30 »
0
Por cierto, cuidado con usar el MS-DOS de Windows XP, no recuerdo si funciona, pero asi de primeras no deberia funcionar. Ningun sistema operativo que se precie (lo es windows?) debería dejar al usuario tocar la tabla de vectores de interrupciones.

Deberias arrancar un MS-DOS de toda la vida, o te haces un disco de arranque, o selecionas la opcion "Solo simbolo de sistema" en el menu de arranque del ordenador.

Nos vemos :hola:
Core Dumped
zirrus.es