Code assembleur et registre
Fermé
njaka91
Messages postés
4
Date d'inscription
jeudi 23 février 2012
Statut
Membre
Dernière intervention
24 février 2012
-
23 févr. 2012 à 11:25
mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 - 27 févr. 2012 à 10:12
mpmp93 Messages postés 6652 Date d'inscription mercredi 13 avril 2011 Statut Membre Dernière intervention 28 septembre 2015 - 27 févr. 2012 à 10:12
A voir également:
- Code assembleur et registre
- Registre windows - Guide
- Code asci - Guide
- Code puk bloqué - Guide
- Code telephone oublié - Guide
- Code blocks free - Télécharger - Langages
1 réponse
mpmp93
Messages postés
6652
Date d'inscription
mercredi 13 avril 2011
Statut
Membre
Dernière intervention
28 septembre 2015
1 339
23 févr. 2012 à 12:48
23 févr. 2012 à 12:48
soit les deux valeurs dans deux registres:
REGA et REGB
on teste si REGA < REGB => si oui, on inverse contenu de REGA et REGB
=> si non on laisse comme ça...
On itère de valeurs en valeurs par paires....
REGA et REGB
on teste si REGA < REGB => si oui, on inverse contenu de REGA et REGB
=> si non on laisse comme ça...
On itère de valeurs en valeurs par paires....
24 févr. 2012 à 11:04
Écrire un programme qui va faire le triage des donner paires et impaires càd
données paires données impaires
140 .... 150 160
141 .... 151 161
142 .... 152 162
. . .
. . .
. . .
14F 15F 16F
En utilisant le test al,01
27 févr. 2012 à 10:12
Une piste: avec les nombres impairs, le bit de poids faible est toujours à '1', celui des valeurs paires est toujours à '0'. Donc:
- avant tri, faire un shift (décalage logique) vers la droite, puis test du bit, il y a sur la plupart des processeurs une instruction de test du bit sorti du registre. Il existe ensuite une instruction de saut conditionnel selon l'état de ce bit dit "carry report"...
Autre solution, faire un ET logique avec la valeur 1, si on a 1 en sortie, c'est que la valeur de départ est impaire...
Exemple:
- on met une valeur N dans AX
- on empile AX -> PUSH AX (on a donc une copie de AX sur la pile...)
- on fait AND AX, #01h (et logique avec valeur de AX)
- on fait un saut conditionnel si AX pas nul (car impair)
- ----section code après saut conditionnel:
- POP AX, on récupère AX valeur initiale
- MOV AX vers zone stockage avant tri....
L'idée est de déplacer au préalable la séquence à trier en deux zones distinctes, l'une contenant les valeurs paires, l'autre les valeurs impaires....
Ensuite, pour chacune de ces zones, on fait un tri, dit "tri à bulles". On teste valeur N et N+1; si n+1 < n, on inverse ces valeurs en mémoire, Puis on passe à la paire suivante. Au passage, si on fait une inversion, on positionne un flag d'inversion à "true". En fin de boucle, on teste ce flag d'inversion et on itère la séquence de tri jusqu'à ce qu'on ait une séquence de tri qui donne un flag d'inversion qui soit "false".
A peluche