Foub12
Messages postés44Date d'inscriptionmardi 9 juillet 2002StatutMembreDernière intervention 1 avril 2007
-
20 août 2004 à 18:16
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 2014
-
20 août 2004 à 22:28
Bonjour...
Je programme sous VC++ 6 et j'ai trouvé sur Internet, la fonction suivante mais elle ne marche pas... Il compile parfaitement mais lors de l'exécution, le code ASM fait tout planter...
Voici la fonction qui doit permettre de un secteur d'une disquette (ce que je veux faire) ou d'un disque et de mettre et de mettre les 512 octets dans mon tableau Buffer : «
int ReadSector(int _Disque, int Tete, int Piste, int Secteur, int Nombre, unsigned char *Buffer)
{
int re = 0;
__asm {
MOV AH,2h
MOV AL, Nombre //Nombre de secteur à lire...
MOV DL, _Disque //Lecteur à lire...
MOV DH, Tete //Tete
MOV CH, Piste //Piste
MOV CL, Secteur //Secteur
MOV BX,DS
MOV ES,BX
MOV BX, word ptr [Buffer]
int 0x13
jc fin
xor AX,AX
fin:
MOV word ptr re,AX
}
return re;
}
»
Voici mon main :
int main()
{
int res; // résultat de la lecture de la disquette
res = ReadSector(0, 0, 0, 1, 1, Buffer);
printf("Resultat : %d\n", res);
return 0;
}
Le programme n'essaye même pas de lire la disquette et il plante en me mettant une erreur mémoire...
HELP ME !!!
racpp
Messages postés1909Date d'inscriptionvendredi 18 juin 2004StatutModérateurDernière intervention14 novembre 201417 20 août 2004 à 22:28
Salut,
Ton programme ne peut fonctionner qu'en mode DOS pur. Si tu l'essaies sur Windows, c'est le plantage assuré car il appelle l'interruption "int 0x13". Les interruptions sont interdites sous Windows. Tu peux le tester en démarrant avec une disquette en mode DOS pur. En plus , je ne suis pas sûr que visual c++ puisse compiler des programmes destinés au mode DOS pur. J'ai déja essayé avec des projets "console" mais je recois toujours le message: "This program can'it be run in dos mode". Y'a t-il un moyen de créer des projets pour le mode DOS pur en VC++?. Si tu as le même problème, tu peux utiliser un autre compilateur DOS comme Turbo C++ (2.7 Mo), téléchargeable gratuitement sur le site de Borland. Il faudra juste modifier légérement ton code source et tout marchera très bien. Remplacer "__asm" par "asm" et ajouter ";" à la fin de chaque ligne comme: "mov AH,2h ; ". Tu devra aussi télécharger "Tasm.exe" (132 ko).
A+