J'ai créé un petit programme DOS qui permet de passer en
mode protégé. Il utilise le driver cwsdpmi.exe v0.9 (Serveur DPMI) .
Je récupère l'adresse de la fonction de passage en mode protégé
en utilisant la fonction 1687h de l'interruption 2Fh.
J'alloue ensuite un bloc de memoire et j'appelle la fonction de
passage en mode protégé.
Le programme s'arrête et le message suivant s'affiche à l'écran :
Voici mon programme :General Protection Fault at eip=107; flags=3202
eax=00042459 ebx=00000006 ecx=00000f06 edx=0000005a esi=00000ab4 edi=00080ad2
ebp=00000000 esp=00001002 cs=87 ds=8f es=97 fs=0 gs=0 ss=a7 error=3b60
Quelqu'un saurrait-il me dire pourquoi ce programme plante ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 mov AX, 1687h int 2Fh mov word ptr [Fct], di mov word ptr [Fct+2], es mov bx, si mov ah, 48h int 21h mov ES, ax call Fct
P.S. : Ce petit programme utilisé dans un Bloc asm {... }
de la fonction main dans un programme C compilé avec
Borland C (mais ça ne change rien au fait que c'est
de l'assembleur).
Merci d'avance.
Partager