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
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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:
Partager