Bonjour!!!
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
-----
Bonjour!!!
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
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é .
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...
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.
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...
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é.
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
++
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+
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.
ciao.