Je dois testé la parité d'une trame en assembleur mais je ne vois pas comment m'y prendre.
Quelqu'un connaît-il assez l'assembleur pour avoir une idée qui me permettrait de trouver une solution???
Merci car je sèche
-----
26/08/2005, 11h24
#2
inviteb865367f
Date d'inscription
janvier 1970
Messages
1 280
Re : Parité en assembleur
Le bit de parité dune trame sert à controller l'intégrité de la trame, il suffit de voir si le nombre de 1 dans ta trame est paire ou impaire et de comparer avec le bit de parité .
26/08/2005, 12h30
#3
invitea2667dd8
Date d'inscription
janvier 1970
Messages
10
Re : Parité en assembleur
Le problème que j'ai c'est que je ne sais justment pas comment compter les bits à 1 de ma trame.
Dois-je décaler toute ma trame pour ensuite testé le carry. Je ne vois pas trop comment faire...
26/08/2005, 12h37
#4
inviteb865367f
Date d'inscription
janvier 1970
Messages
1 280
Re : Parité en assembleur
Y'a surement plein de méthode qui marche, regarde dans la doc assembleur (d'ailleurs c'est quel assembleur ?) les commandes pour tester un bit.
Aujourd'hui
A voir en vidéo sur Futura
26/08/2005, 12h42
#5
invitea2667dd8
Date d'inscription
janvier 1970
Messages
10
Re : Parité en assembleur
Mon microcontôleur est un Hitachi H8S2144. Il ya bien sur des fonction comme (btst.b) mais je ne vois pas comment mettre en relation plusieurs tests de bits pour savoir si j'en ai un nombre paire ou pas...
26/08/2005, 12h48
#6
inviteb865367f
Date d'inscription
janvier 1970
Messages
1 280
Re : Parité en assembleur
Hum, il me semble que btst test le bit et inscrit le résultat dans le registre Z, donc c'est un test au sens que tu peux utiliser "beq" apres et executer le code que tu veux dans le cas ou le bit est à 0 ..
J'ai pas de doc sous la main donc je peux pas te donner les commandes exactes non plus.
En gros tu prendre un registre que tu initialise à 0. Tu testes chaque bit de ta frame, si il est à 1 tu inverses ton reigstre (0->1; 1->0). A la fin tu dois avoir la même chose que ton bit de parité.
26/08/2005, 13h08
#7
invitea2667dd8
Date d'inscription
janvier 1970
Messages
10
Re : Parité en assembleur
Ouai ca m'a l'air d'être une bonne solution d'inverser un registre quand j'ai un 1 et de comparer avec le bit de parité à la fin.
J'ai fais un petit test sur papier et ca marche.
Je te remercie bcp pout ton aide
++
26/08/2005, 16h46
#8
Jack
Modérateur
Date d'inscription
avril 2003
Localisation
Metz
Messages
17 772
Re : Parité en assembleur
salut,
à mon avis le plus simple est de faire des rotations de l'octet. Le bit sortant est toujours recueilli dans la carry. Tu as surement des instructions du type branchement si carry=0 ou si carry=1.
Selon l'état de la carry tu fais ou non une incrémentation d'un compteur. Au bout de 8 rotations, ton octet a repris sa valeur initiale et il faut passer à l'octet suivant.
A la fin de la trame le compteur te donne la parité.
Ce qui m'étonne, c'est l'intérêt d'un bit de parité pour une trame. Pour un octet, d'accord, mais pour une trame,on effectue plutôt un checksum ou un crc.
A+
27/08/2005, 16h49
#9
invite967d1576
Date d'inscription
janvier 1970
Messages
1
Re : Parité en assembleur
Salut,
Pour calculer la parité, une des possibilité est d'utiliser le OU Exclusif sur les bits de la trame.
Au début de la vérification, faire un Ou exclusit avec les 2 premiers bits de la trame. Ensuite, faire un ou exclusif avec ce resultat et le 3eme bit et ainsi de suite...
A la fin, si le resultat est '0', le nombre de 1 dans la trame est paire, si le résultat est '1', la trame est impaire.