bonjour à tous
je désire savoir est ce qu'il y a un code en assembleur qui permet de permuter deux variables à l'aide d'un PIC 16F84A
merci d avance
-----
bonjour à tous
je désire savoir est ce qu'il y a un code en assembleur qui permet de permuter deux variables à l'aide d'un PIC 16F84A
merci d avance
j'ai essayé avec ce code, je veux permuter le contenu de aide1 et aide2:
est ce juste??y a-t-il autre méthode meilleure que la mienne???Code:movf aide1,w movwf aide movf aide2,w movwf aide1 movf aide,w movwf aide2
Leste des variables utilisees
VarA Variable A
VarB Variable B
Temp1 Tampon 1
w
movf VarA,w ; recopie de VarA dans w
movwf Temp1 ; recopie w dans TempA
movf VarB,w ; recopie VarB dans w
movwf VarA ; recopie w dans VarA Var B est passe dans Var A
movf Temp1,w ; Recopie Temp1 dans w
movwf VarB ; recopie w dans VarB Var A est passé dans VarB
voila selon la methode des empilements....
Zut grillé selon le meme cheminement...
merci pour votre réponse
En ce qui me concerne, je ne trouve pas de solution plus simple... Mais comme je ne connais pas tout..... Toute info supplementaire sera la bienvenue
Sans passer par une variable intermédiaire
Var1 = Var1 XOR Var2
Var2 = Var1 XOR Var2
Var1 = Var1 XOR Var2
sauf qu'en asm, on est obligé de passé a minima par des recopies dans w pour toute operation A > w > B
Des assembleurs, il y en a autant que de famille de µP ou de µC. Il suffit de travailler avec un assembleur qui permet ce genre d'opération (par exemple c'était le cas de la famille Texas TMS9995)
Euh sur un PIC, on a cette contrainte...
Salut,
pas mal la technique de Daudet.
avec le pic16f84a on peut pas s'affranchir du registre de travail effectivement, mais si je me suis pas gouré (j'ai pas les d'outil autre que mon cerveau sous la main pour vérifier, et c'est pas un outil infaillible), on doit pouvoir adapter cette façon de faire.
ça fait économiser 1 variable et 2 instructions (si je me suis pas gouré bien entendu):
qui peut vérifier?Code:movf aide1,w xorwf aide2, w xorwf aide2, aide2 xorwf aide2, aide1
a+
Je ne connais pas les PICs .... maisdoit donner 0000Code:xorwf aide2, aide2
pas forcément. ça dépend de ce qui se trouve dans le registre W (le registre de travail).
l'instruction que tu donnes en exemple ne signifie pas...
"faire un xOR entre aide2 et aide2 et stocker le resultat dans W"
...mais...
"faire un XOR entre W et aide2 et stocker le résultat dans aide2"
Bonjour,
Une macro comme ça fonctionne bien en 3 instructions et 3 cycles seulement.Code:SWAPWF MACRO REG XORWF REG,F XORWF REG,W XORWF REG,F ENDM
effectivement...
finalement j'ai écris pas mal de conneries dans mes 2 précédents messages x:
le 2e paramètre de l'instruction xorwf ne peut être que "w" (registre de travail) ou "f" (registre d'origine) et on peut pas placer le résultat directement ou on veut.
ceci dit HULK, faut quand même ajouter à ta macro la copie de l'une des variables dans W avant l'appel de la macro et la recopie de W dans la variable après l'appel
Pas mal en effet... j'utilise assez peu les xorwf... Un tort surement...
je sais fto, mon autre tort est de jouer avec des pic nan?
.....