Mode Réel et accès mémoire FLAT
Bonjour,
le code qui suit permet de basculer le processeur (386 et supérieur)
en mode FLAT, ce qui permet d'adresser jusqu'à 4Go de RAM :D
L'interruption 15h au début a été rajouté récemment avec l'aide de
certaines personnes du forum, et permet d'activer la ligne A20 présente sur de "vieux" systèmes.
les systèmes plus récents ne gèrent pas cette interruption et renvoient une
erreur. cette dernière n'est pas gérée mais ne provoque aucun effet.
Ce code est prévu pour être utilisé sous DOS, mais peut-être très facilement
modifié pour être utilisé dans un OS "maison"
Amusez-vous bien ;)
François
compilateur utilisé : FASM
Code:
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 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56
|
; ------------------------------------
; MISE EN PLACE DU MODE FLAT OU UNREAL
; ------------------------------------
org 100h
; Installation du mode FLAT
mov ax,2401h
int 15h
cli
mov eax,cs
shl eax,4
mov ebx,gdt
add eax,ebx
mov [gdt_adr],eax
mov bx,gdt_ptr
lgdt [bx]
mov eax,cr0
or al,1
mov cr0,eax
jmp short $+2
mov bx,8
mov fs,bx
mov ds,bx
mov es,bx
mov gs,bx
and al,0FEh
mov cr0,eax
sti
mov ah,4Ch ;
int 21h ;exit
;------------------------------------------------------------------------
gdt: dw 0
dw 0
db 0
db 0
db 0
db 0
dw 0FFFFh
dw 0
db 0
db 092h
db 0CFh
db 0
gdt_ptr dw 15
gdt_adr dd 0
END_prog: |