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

  FORUM HardWare.fr
  Programmation

  plus grand que plus petit que en assembleur HELP

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

plus grand que plus petit que en assembleur HELP

n°118571
bonzefou
Posté le 28-03-2002 à 10:38:10  profilanswer
 

voila
je dois faire de la compaison avec un microcon qui n a pas la fonction CMP et pas de negativ flag
j ai par contre ts les autres operateurs
 
qq un aurait il une idee pr m aider?
 
merci :)


---------------
*<8OD
mood
Publicité
Posté le 28-03-2002 à 10:38:10  profilanswer
 

n°118690
zi_ril_wan​ou
Posté le 28-03-2002 à 14:18:57  profilanswer
 

bonzefou a écrit a écrit :

voila
je dois faire de la compaison avec un microcon qui n a pas la fonction CMP et pas de negativ flag
j ai par contre ts les autres operateurs
 
qq un aurait il une idee pr m aider?
 
merci :)  




r1 <- val1
r2 <- val2
r2 <- not(r2)
r3 <- and(r1,r2)
bnz IF_<>
ba ELSE
...
 
Cà t'irait ??? (c'est du petit nègre, tu adaptes ensuite à ton assembleur)
 
en gros c'est équivalent en C à
 
int i,j;
 
i=val1;
j=val2;
 
j=j^0xFFFF; /* r2 = not(r2)*/
 
if ((i&j)!=0) /* bnz */  
   {...}
else  
   {...}

 

[jfdsdjhfuetppo]--Message édité par zi_ril_wanou--[/jfdsdjhfuetppo]


---------------
Get the Cooool... Get the cool shoe-shine !
n°118707
bonzefou
Posté le 28-03-2002 à 14:54:53  profilanswer
 

merci bcp
 
la on sait que r1 et r2 sont differents ou pas  
mais pr savoir qui est le + gd?
 
 :jap:


---------------
*<8OD
n°118716
zi_ril_wan​ou
Posté le 28-03-2002 à 15:08:23  profilanswer
 

bonzefou a écrit a écrit :

merci bcp
 
la on sait que r1 et r2 sont differents ou pas  
mais pr savoir qui est le + gd?
 
 :jap:  




+gd avec des non signés, c'est toujours délicat... (-1 > 127 en non signé)
Détail moi tout ça : quelle est la taille de tes registres ?
Quelle est la valeur maximale que tu pense y mettre ?
 
Sinon, par exemple avec des signés sur 8 bits, c'est tout bête !
Le bit de poids fort de chacun d'eux est à 0.
donc :
r1 <- val1
r2 <- val2
r3 <- r1 - r2
 
r4 <- and(r3,0x10000000)
bnz R2_greater_than_R1
 
r3 <- r2 - R1
r4 <- and(r3,0x10000000)
bnz R1_greater_than_R2
 
ba  R1_equals_R2


---------------
Get the Cooool... Get the cool shoe-shine !
n°118729
bonzefou
Posté le 28-03-2002 à 15:41:34  profilanswer
 

justement ils sont pas signes
 
les registres font 32 bits
je compare par rapport a 40 et 48  
je pense que le nombre le plus gd sera de l ordre de 500
 
merci bcp pr ton aide

 

[jfdsdjhfuetppo]--Message édité par bonzefou--[/jfdsdjhfuetppo]


---------------
*<8OD
n°120077
bonzefou
Posté le 02-04-2002 à 08:14:38  profilanswer
 

un petit up parce que je vois vraiment pas comment faire
 :)


---------------
*<8OD
n°120252
bonzefou
Posté le 02-04-2002 à 15:01:53  profilanswer
 

up  :cry:


---------------
*<8OD
n°121250
bonzefou
Posté le 04-04-2002 à 10:25:24  profilanswer
 

siouplait :(


---------------
*<8OD
n°121267
JPA
Posté le 04-04-2002 à 10:44:33  profilanswer
 

c'est quoi ton microcontroleur ?
tu as une URL où il est décrit ?
A+

n°121310
JPA
Posté le 04-04-2002 à 12:05:12  profilanswer
 

si tu compares avec des nombres faibles (40 et 48) celà ne me semble pas trop dur :
soit a le nombre à tester:
si a=1
a-48 = 11111111111111111111111111010001
et  
48-a = 00000000000000000000000000101111
il suffit donc de tester le bit de poids fort :
 
tu stocke a-48 dans r1, 48-a dans r2
 
tu fais r1 ET 10000000000000000000000000000000
si zero => a>48 goto suite du programme pour a>48
sinon a<= 48
tu fais r2 ET 10000000000000000000000000000000
si zero => a<48 goto suite du programme pour a<48
sinon a=48
 
A tester bien sur, mais celà me semble une base de départ.
 
A+
 
NB : ce test ne marchera pas bien sur si a est supérieur à 2^31+49, mais comme tu as dit que le nombre maxi était de l'ordre de 500, celà doit être OK

 

[jfdsdjhfuetppo]--Message édité par JPA--[/jfdsdjhfuetppo]

mood
Publicité
Posté le 04-04-2002 à 12:05:12  profilanswer
 

n°121339
bonzefou
Posté le 04-04-2002 à 13:29:29  profilanswer
 

ok merci je vais tester
faudrait que j arrive enfin a trouver si les nbres negatif sont bien traites comme ca
 
 :jap:  
je te tiens au courant


---------------
*<8OD
n°121348
bonzefou
Posté le 04-04-2002 à 13:51:14  profilanswer
 

au fait si a=48 alors r1=r2=0
donc faut modifier  
 
si a=1  
a-48 = 11111111111111111111111111010001  
et  
48-a = 00000000000000000000000000101111  
il suffit donc de tester le bit de poids fort :  
 
tu stocke a-48 dans r1, 48-a dans r2  
 
tu fais r1 ET 10000000000000000000000000000000  
   si zero => a>=48 goto suite du programme pour a>=48  
        tu fais r2 ET 10000000000000000000000000000000  
            si zero => a=48 goto suite du programme pour a=48  
            sinon a>48  
 
  sinon a< 48  
 
ca doit etre ca :)


---------------
*<8OD

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

  plus grand que plus petit que en assembleur HELP

 

Sujets relatifs
[VC++] pb de memory leaks :( help..Help me pleaaaase : garder uniquement les décimales sous VB
Newbie---------> Need help[HTML & DHTML] HELP : Problème avec objet INPUT type=file
[php] Petit probleme ki semble tt con ms j'y arrive pas !!!! help !Petit probleme d'assembleur , ca ne doit pas etre bien mechant, Help!
Integration de code assembleur dans du C avec mingw32 
Plus de sujets relatifs à : plus grand que plus petit que en assembleur HELP


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