ejemplos modo protegido.pdf


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


Página 1...68 69 70717291

Vista previa de texto


;
; Se acomoda el offset de la call gate del kernel.
;
lea eax,[kernel_routine]
mov [kernel],ax
shr eax,16
mov [kernel+6],ax
;
; Se acomoda el offset de la call gate del print.
;
lea eax,[print_routine]
mov [print],ax
shr eax,16
mov [print+6],ax
;
; Se acomoda la base de la gdt.
;
lea eax,[ebx+gdt]
mov [gdtr+2],eax
lgdt [gdtr]
;
; Se pasa a modo protegido.
;
cli
mov eax,cr0
or al,1
mov cr0,eax
jmp 08h:modo_protegido
modo_protegido:
;
; Se carga el TR.
;
mov ax,tss_in_selector
ltr ax
;
; Se salta a la otra tarea para pasar de nivel.
;
jmp tss_selector:0
;
; Y se retorna a modo real de la forma normal.
;
retornar_modo_real:
cli
mov ax,data_sel_0
mov ds,ax
mov es,ax
mov fs,ax
mov gs,ax
mov ss,ax
mov eax,cr0
and al,0feh
mov cr0,eax
db 0eah
dw modo_real
real_cs resw 1
modo_real:
mov ax,cs
mov ss,ax

;pasa a modo real.
;código del salto.