• Domingo 22 de Diciembre de 2024, 13:29

Autor Tema:  Como Crear Una Nueva Interrupcion  (Leído 1320 veces)

juanito20

  • Nuevo Miembro
  • *
  • Mensajes: 7
    • Ver Perfil
Como Crear Una Nueva Interrupcion
« en: Lunes 26 de Febrero de 2007, 05:23 »
0
RESUMEN
1 como modifico el vector de interrupciones?
2 como subo a memoria un conjunto de instrucciones?
..............................................................................

Necesito hacer un sistema de arranque y un minishell, el cual sera capaz de realizar algunas funciones basicas como DETECTAR cantidad de cabezas, sectores,pistas y cilindros de alguna unidad, LEER un sector, y determinar TAMANO del disco. Todavia no se si podre hacer las funciones, espero que si, pero lo que me preocupa y que definitivamente no tengo idea de como hacer es que debo crear esas funciones y, subirlas a memoria y crear nuevas interrupciones que ejecuten esas funciones de manera que el minOS al recibir un comando, ejemplo:
Konzole/:>TAMANO C

lo que haga el sistema sea una simple llamada a una interrupcion con el paramentro en algun registro, o sea, algo asi:

MOV AH, 80h ; el 80h es puro ejemplo
INT 99 ;

A todo esto mis preguntas son,
1 como modifico el vector de interrupciones?
2 como subo a memoria un conjunto de instrucciones?

Ya tengo el shell y el sistema de arranque, lo que me faltan son las funciones y como crear las nuevas interrupciones.

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Como Crear Una Nueva Interrupcion
« Respuesta #1 en: Lunes 26 de Febrero de 2007, 09:27 »
0
De manera simple para "crear" una nueva interrupcion lo que se hace es escribir en una estructura que ya esta en memoria. El chiste es hacer que una de sus entradas apunte a nuestro codigo (eso seria lo que denominas "subir a memoria un conjunto de instrucciones", en realidad ya estan en memoria si tu codigo se esta ejecutando).

Para saber la direccion de esta estructura en memoria necesitamos obtener el valor contenido en el registro IDTR, no accesible directamente, usando la instruccion lidt.

http://pdos.csail.mit.edu/6.828/2005/readings/i386/LGDT.htm

Aca mucha mas informacion sobre la estructura:
http://www.acm.uiuc.edu/sigops/roll_your_own/i386/idt.html

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.