Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1701 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  Problème bizarre en C

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Problème bizarre en C

n°168255
BMenez
Posté le 28-06-2002 à 22:12:34  profilanswer
 

J'ai un problème vraiment bizarre en C. J'aimerais savoir si vous avez déjà rencontré une chose semblable.
Je suis en train de programmer ma carte réseau en hard et j'ai ce problème :
Pour récupérer l'adresse MAC de la carte, je fais :
outportb(0x21,ADRESSE+0x00);
outportb(0x49,ADRESSE+0x0E);
outportb(0x02,ADRESSE+0x0D);
outportb(0x0C,ADRESSE+0x0A);
outportb(0x00,ADRESSE+0x0B);
outportb(0x00,ADRESSE+0x08);
outportb(0x00,ADRESSE+0x09);
outportb(0x0A,ADRESSE+0x00);
mac0=inportb(ADRESSE+0x10);
mac1=inportb(ADRESSE+0x10);
mac2=inportb(ADRESSE+0x10);
mac3=inportb(ADRESSE+0x10);
mac4=inportb(ADRESSE+0x10);
mac5=inportb(ADRESSE+0x10);
 
Cela ne fonctionne pas. Je cherche depuis 2 jours et je décide d'écrire la même chose mais en assembleur (in al,dx / out dx,al) et MIRACLE! Cela fonctionne.
Pourquoi est-ce que le programme en C déconne (valeurs aléatoires dans macX) ?
Je precise que j'ai essayé deux compilos (Turbo C++ 3.0 pour DOS et DJGPP 3.1)

mood
Publicité
Posté le 28-06-2002 à 22:12:34  profilanswer
 

n°168366
bjone
Insert booze to continue
Posté le 29-06-2002 à 11:57:47  profilanswer
 

poste le code asm qui marche pour voir.

n°168370
BMenez
Posté le 29-06-2002 à 12:20:49  profilanswer
 

Je viens de m'apercevoir que c'est la portion d'initialisation qui chie en C.
Mais je ne sais toujours pas pourquoi....
 
;-- outportb(0x21,ADRESSE+0x00);  
mov dx,ADRESSE
mov al,21h
out dx,al
;-- outportb(0x49,ADRESSE+0x0E);  
mov dx,ADRESSE
add dx,0Eh
mov al,49h
out dx,al
;-- outportb(0x02,ADRESSE+0x0D);  
dec dx
mov al,02
out dx,al
;-- outportb(0x0C,ADRESSE+0x0A);  
mov dx,ADRESSE
add dx,0Ah
mov al,0Ch
out dx,al
;-- outportb(0x00,ADRESSE+0x0B);  
inc dx
xor al,al
out dx,al
;-- outportb(0x00,ADRESSE+0x08);  
mov dx,ADRESSE
add dx,08h
out dx,al
;-- outportb(0x00,ADRESSE+0x09);  
inc dx
out dx,al
;-- outportb(0x0A,ADRESSE+0x00);  
mov dx,ADRESSE
mov al,0Ah
out dx,al
add dx,10h
;-- mac0=inportb(ADRESSE+0x10);  
in al,dx
mov mac0,al
;-- mac1=inportb(ADRESSE+0x10);  
in al,dx
mov mac1,al
;-- mac2=inportb(ADRESSE+0x10);  
in al,dx
mov mac2,al
;-- mac3=inportb(ADRESSE+0x10);  
in al,dx
mov mac3,al
;-- mac4=inportb(ADRESSE+0x10);  
in al,dx
mov mac4,al
;-- mac5=inportb(ADRESSE+0x10);  
in al,dx
mov mac5,al


Message édité par BMenez le 29-06-2002 à 20:43:23
n°168508
HelloWorld
Salut tout le monde!
Posté le 30-06-2002 à 00:24:27  profilanswer
 

C'est quoi au juste ton ADRESSE ?
L'adresse d'un structure ?
Car si tu definis ta structure, le compilo peut pour optimiser l'acces memoire effectuer des alignements et tout te décaler. J'ai déjà eu ce problème et il faut entourer la déclaration de la structure d'une directive de compilation propre a chaque compilo (#pragma pack(1)), a condition que l'erreur vienne de là biensûr ...


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°168533
BMenez
Posté le 30-06-2002 à 09:36:40  profilanswer
 

En fait, il s'agit juste de l'adresse de la carte réseau.
#define ADRESSE 0xB800

n°168545
bjone
Insert booze to continue
Posté le 30-06-2002 à 10:50:49  profilanswer
 

hep, c'est:
 
outportb(adresse,valeur);

n°168546
BMenez
Posté le 30-06-2002 à 10:59:59  profilanswer
 

OUAH ! Le con !!! Le con !!! Le con !!!  :eek2:  
Merci bjone !


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  Problème bizarre en C

 

Sujets relatifs
Problème de retour chariot dans la fonction mail[PHP] Probleme de concatenation .... URGENT
Probleme avec l'authentification HTTP[Probleme] exel
probleme avec fonctions preg_replace[PHP] Problème avec if !(
petit probleme avec requete Delete je pense facile mais je vois pas[XML/XSL] Problème de gestion des espaces
Problème JAVA avec OraclePetit problème de syntaxe
Plus de sujets relatifs à : Problème bizarre en C


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR