ejemplos modo protegido.pdf


Vista previa del archivo PDF ejemplos-modo-protegido.pdf


Página 1...31 32 33343591

Vista previa de texto


;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;
;

ej04.asm - excepciones en modo protegido
Protected Mode by Examples – 1era Edición - Octubre 2004
Autor:
Mariano Cerdeiro
<m.cerdeiro@soix.com.ar>
http://www.soix.com.ar/links/mpbyexamples.html
compilar: nasm ej04.asm -o ej04.com
Excepciones
En este ejemplo se estudiarán las excepciones. Las excepciones son
interrupciones generadas por el procesador cuando se detecta algún
tipo de violación. Las fuentes pueden ser:
- Cuando se detecta un error en el programa.
- Cuando el programa la genera.
- Por un error de chequeo del procesador.
Las excepciones se clasifican en 3 tipos:
- Fault: Son excepciones que pueden ser corregidas. Permiten que
el programa continúe su ejecución. Las fault suceden ANTES de
que se ejecute la instrucción que la genera.
- Trap: Son excepciones que permiten seguir con la ejecución
normal del programa pero que, a diferencia de las faltas,
suceden luego de la ejecución de la instrucción. O sea, el ip
apunta a la siguiente instrucción.
- Abort: No se puede conocer con certeza la instrucción que las
generó. No hay forma de regresar a la aplicación. Se trata de un
error GRAVE y la aplicación que la generó debe ser cerrada.
El procesador tiene reservadas las primeras 32 entradas de
interrupciones para las excepciones, del vector 0 al 31 decimal. Las
interrupciones del valor 32 al 255 están destinadas al usuario. Pero
las IRQ 0 a la 7 ocupan las interrupciones de la 8 a la 15, lo cual es
un inconveniente, ya que la excepción 8 está superpuesta con la IRQ0,
la 9 con la IRQ1 y sucesivamente. Es por eso que, cuando ocurre una
interrupción, como por ejemplo la 8, no se estará seguro de la
fuente. Podría haber sido generada por una excepción de doble falta o
por una IRQ del timer tick.
Para resolver este inconveniente se modifica la base del PIC 0, de
modo que la base del mismo se encuentre arriba de la interrupción 31,
a partir de donde Intel dejó disponible las interrupciones para el uso
del programador del sistema.
Las excepciones son las siguientes:
Vector Descripción

Tipo

Error
Code
No
No

0
1

Divide Error
Debug

Fault
Fault/
Trap

2

NMI Interrupt

-

-

3
4
5

Breakpoint
Overflow
BOUND

Trap
Trap
Fault

No
No
No

Fuente de la excepción
Instrucciones DIV o IDIV
Instrucción Int 1 o
Cualquier instrucción o
referencia a datos
Interrupción no
enmascarable
Instrucción INT3
Instrucción INTO
Instrucción BOUND