ejemplos modo protegido.pdf


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


Página 1...41 42 43444591

Vista previa de texto


;
;
;
;
;

Por último se utilizarán dos descriptores más. Uno FLAT, para acceder,
por ejemplo, a la memoria de video, y realizar las impresiones en
pantalla. Otro de 64 Kbytes, para colocar antes de retornar a modo
real. Sus valores son:
dw
dw
db
db
db
db

0ffffh
00000h
000h
10010010b
10001111b
00h

dw
dw
db
db
db
db

0ffffh
0
0
10010010b
0
0

;limite 15.00
;base 15.00
;base 23.16
;Presente Segmento Datos Read Write
;G y limite 0Fh
;base 31.24

;
; Luego se define la IDT, en la que se deben indicar todas las
; excepciones e interrupciones que se desean recibir. En este caso se
; usan dos puertas de interrupciones, pero en otros es recomendable usar
; puertas de tarea, por ejemplo en una doble falta, o en la stack fault.
; Esto se debe a que a veces es necesario cambiar de entorno de tarea
; para no seguir generando la excepción. Por ejemplo: si se acaba la
; pila estando en una rutina de nivel 0 y se desea ejecutar una stack
; fault, se necesita pila para colocar las direcciones de retorno. En
; este caso será mejor utilizar tareas alternativas.
;
idt:
resb 8*6
;
; Invalid Opcode exception handler.
;
int6: dw
int6han
dw
08h
db
0
db
10000110b
db
0
db
0
;
; Se reserva espacio para las interrupciones 7,8,9,10,11,12 que no
; se utilizan.
;
resb 8*6
;
; General Protection exception handler.
;
int13:
dw
int13han
dw
08h
db
0
db
10000110b
db
0
db
0
;
; Se reserva espacio para las interrupciones 14, 15, 16, 17, 18, 19, 20,
; 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32.
;
resb 8*19
irq1: dw
irq1han
dw
08h