ejemplos modo protegido.pdf


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


Página 1...56 57 58596091

Vista previa de texto


mov
shr
mov
mov

word [seg_data+2],ax
eax,16
byte [seg_code+4],al
byte [seg_data+4],al

;
; Se carga el IDTR, para lo que se inhabilitan las interrupciones.
;
cli
xor eax,eax
mov ax,cs
shl eax,4
mov ebx,eax
sidt [real_idtr]
mov eax,ebx
add eax,idt
mov dword [idtr+2],eax
lidt [idtr]
;
; Se guarda la máscara del PIC de modo real y se coloca el del programa
; en cuestión.
;
in al,21h
mov [mask_real_pic1],al
mov al,011111100b
out 21h,al
;
; Se colocan correctamente las bases de los tss’s en los descriptores.
;
xor eax,eax
mov ax,cs
shl eax,4
mov ebx,eax
add eax,TSS_inicial_struc
mov word [tss1+2],ax
shr eax,16
mov byte [tss1+4],al
mov eax,ebx
add eax,TSS_sup_struc
mov word [tss2+2],ax
shr eax,16
mov byte [tss2+4],al
mov eax,ebx
add eax,TSS_inf_struc
mov word [tss3+2],ax
shr eax,16
mov byte [tss3+4],al
;
; Se coloca correctamente la base de la GDT.
;
mov eax,ebx
add eax,gdt
mov dword [gdtr+2],eax
lgdt [gdtr]
;se carga el GDTR.
;
; Se hace que la irq0 se ejecute 1.19e6/2E7Ch veces por segundo, o sea,
; cada 10 mseg.
;
mov ax,2E7ch
out 40h,al
mov al,ah
out 40h,al