ejemplos modo protegido.pdf


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


Página 1...57 58 59606191

Vista previa de texto


;
; Se pasa a modo protegido.
;
mov eax,cr0
or al,1
mov cr0,eax
jmp 08h:modo_protegido
modo_protegido:
;
; Se carga el TSS inicial.
;
mov ax,tss_inicial
ltr ax
;
; Se habilitan las interrupciones.
;
sti
;
; Se permanece para siempre aquí y se deja que el scheduler salte a la
; próxima tarea.
;
jmp $
;
; Al pulsarse escape, la rutina de atención de la irq1 salta a
; retornar_modo_real.
;
retornar_modo_real:
;
; Aquí se salta a través de la interrupción del teclado, la cual es una
; interrupt gate, por lo que no es necesario inhabilitar las
; interrupciones, que ya se encuentran inhabilitadas.
;
mov ax,data_sel
mov ds,ax
mov es,ax
mov fs,ax
mov gs,ax
mov ss,ax
mov esp,0fffeh
mov eax,cr0
and al,0feh
mov cr0,eax
;se pasa a modo real.
db 0eah
;código del salto.
dw modo_real
real_cs dw 0
modo_real:
mov ax,cs
mov ss,ax
mov sp,0fffeh
mov ds,ax
mov es,ax
mov fs,ax
mov gs,ax
;
; Se recuperan la IDT y las máscaras.
;
lidt [real_idtr]
mov al,mask_real_pic1