1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
|
lgdt [_pgdt] ;charge la GDT
;***************************
;ensuite si l'on veut modifier directement la gdt, on peut faire comme ça:
mov [_gdt_cs+2], word 0xFFFF ;modifie l'adresse de la base
;***************************
_gdt:
db 0,0,0,0,0,0,0,0
_gdt_cs: ;le descripteur du segment de code
dw 0x0FFFF ;seg_length0_15
dw 0x0000 ;base_addr0_15
db 0x00 ;base_addr16_23
db 10011011b ;1[P]2[DPL]1[DT]4[TYPE]
db 11001111b ;4[Sg. length 19:16]1[AVL]1[0]1[D]1[G]
db 0x00 ;base_addr24_31
_gdt_ds: ;le descripteur du segment de données et de pile
dw 0x0FFFF ;seg_length0_15
dw 0x0000 ;base_addr0_15
db 0x00 ;base_addr16_23
db 10010011b ;1[P]2[DPL]1[DT]4[TYPE]
db 11001111b ;4[Sg. length 19:16]1[AVL]1[0]1[D]1[G]
db 0x00 ;base_addr24_31
_gdt_fin:
_pgdt:
dw _gdt_fin-_gdt-1 ;limite
dd _gdt ;base |
Partager