Boucle en ASM [Résolu]

Messages postés
9
Date d'inscription
mardi 25 novembre 2008
Dernière intervention
7 juillet 2010
- 25 juil. 2009 à 19:40 - Dernière réponse :
Messages postés
9
Date d'inscription
mardi 25 novembre 2008
Dernière intervention
7 juillet 2010
- 29 sept. 2009 à 19:27
Bonjour, je suis un jeune debutant en assembler et j'aimerais savoir à koi sert la BOUCLE dans un programme Assembler
merci de bien vouloir m'aider
Afficher la suite 

Votre réponse

6 réponses

Meilleure réponse
Messages postés
10
Date d'inscription
mercredi 10 septembre 2008
Dernière intervention
21 avril 2011
28 sept. 2009 à 00:04
3
Merci
Bonsoir
une boucle est un outil informatique qui permet d'executer des instructions
ou un sous programme pas mal de fois (defins par le programmeur)
dont la syntaxe est :

label ; label:de ton choix
...
...
...
goto label ; goto:mot cléf primordial utilisé pour refaire la boucle

la boucle s'utilise dans pas mal d'applications,mais je vais entamer
l'une des applications les plus utilisées c'est le temporisateur

programme d'un temporisateur de niveau1:

movlw 0XFF ;charger w par la valeur hexa FF =11111111(binaire)
boucle ;label de boucle
movwf compteur ;chager le contenu de w dans le registre compteur
;créé par le programmeur
decfsz compteur,w ; decrementer le contenu du registre compteur
; mettre le resultat dans w et sauter si zero
goto boucle ; compteur#0 --> refaire la boucle

Merci abdellahchakir 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de abdellahchakir
Meilleure réponse
Messages postés
197
Date d'inscription
samedi 2 mai 2009
Dernière intervention
16 novembre 2010
28 sept. 2009 à 12:17
3
Merci
Bonjour;

Le terme de boucle indique que l'on revient au départ, le système est bouclé, comme pour un amplificateur avec sa contre-réaction, ou un oscillateur, qui n'oecille qu'à cause de sa boucle.

Et il y a plusieurs sortes de boucles, surtout 3:
1) boucle de répétition, avec le nombre de tours défini à l'avance.
2) boucle faire "tant que", avec un nbre de tours indéfini, avec une condition à l'entrée. Donc on n'y rentre pas forcément.
3) boucle faire "jusqu'à", style la précédente mais condition à la sortie. Donc on y fait un passage mais on ne revient pas forcément en haut pour faire un deuxième.

Ensuite il y a des combinaisons de boucles, par exemple les boucles chevauchantes, une grande boucle peut englober une ou des petites. Ces boucles chevauchantes se font en Pascal et C, et en assembleur. Ces boucles sont courantes et connues de tout le monde

Il y a aussi les boucles imbriquées, interdites en Pascal, en C, mais possibles en assembleur, elles sont totalement différentes des précédentes, et procèdent d'un mécanisme identique à une chaîne à maillons croisés, donc pas la chaîne de vélo, mais les chaînes de levage, les chaînes à vaches, ou de marine. On passe d'une boucle à l'autre avant que la première soit forcément satisfaite mais quand l'entrée de la 2e l'est, et réciproquement, et la difficulté est d'en sortir, et il faut croire que les rédacteurs de langages de haut niveau ont renoncé à modéliser ce genre de boucles en les déclarant "impossibles.

Mais l'assembleur est un jeu où tout est permis aux artistes de la spécialité comme avoir une case mémoire qui sert à plusieurs variables, chacune à son tour, ou des variables qui changent de type, comme il n'y a pas de type en assembleur, que tout est bit ou octet, vous pouvez multiplier des lettres, ou faire tout ce qui est possible aux instructions, sans contrôle. C'est le règne de la liberté. C'est beaucoup plus puissant que tous les autres langages, qui eux ont été écrits en assembleur.
pont

Merci pont 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 92 internautes ce mois-ci

Commenter la réponse de pont
Messages postés
3983
Date d'inscription
jeudi 14 juillet 2005
Dernière intervention
30 juin 2013
25 juil. 2009 à 23:52
0
Merci
Une boucle sert à exécuter un certain nombre de fois une ou plusieurs actions. Dans les exemples, on considère que la fonction prints (en stdcall) prend en paramètre un pointeur sur une chaine de caractères et l'affiche.
Premier exemple, via l'opérateur LOOP
mov ecx,2
@boucle:
push offset msg
call prints
loop @boucle
;Ce programme affichera 2 fois le même message


On peut aussi gérer la boucle nous-mêmes, en comparant le compteur (ou autre chose) à une certaine valeur et en fonction du résultat, sauter au début de la boucle ou pas.

Deuxième exemple :
mov ecx,2
@boucle:
push offset msg
call prints
dec ecx
jnz @boucle
;Ce programme fait la même chose que le premier exemple



---
VB.NET is good ... VB6 is better
Commenter la réponse de cs_ghuysmans99
Messages postés
9
Date d'inscription
mardi 25 novembre 2008
Dernière intervention
7 juillet 2010
29 sept. 2009 à 09:48
0
Merci
m erci milles fois de ta reponse
Commenter la réponse de vita01
Messages postés
197
Date d'inscription
samedi 2 mai 2009
Dernière intervention
16 novembre 2010
29 sept. 2009 à 18:42
0
Merci
Bonjour Vita01,

Pour compléter ce qui a été dit plus haut, je te donne un exemple bien connu sur les temporisations de tout système, qui sont de véritables blocages du système, qui devient alors totalement inopérant pendant leur déroulement, on avait la même chose avec les entrées de données et encore maintenant sur le PC, on voit un encadré, qui donne un ordre de cliquer ici, sinon tout reste bloqué, c'est de la très mauvaise programmation.

Au contraire, en assembleur, vous n'avez pas cela, il n'y a aucune procédure de tempo, donc on ne vous suggère rien. Et plutôt que de faire du comptage débile dans une tempo, ce que les idiots s'obstinent à faire en vrais moutons de Panurge, on voit cela partout dans les cours d'informatique, c'est aussi abrutissant que les tris de fichiers, preuve que j'ai subi ça à la fac, on construit une tempo efficace, qui fait quoi?

Je parle du contexte industriel, où on a une machine, qu'elle soit de fabrication ou d'emballage, n'importe, et comme toute machine elle est automatisée, avec un petit microcontrôleur dans lequel il y a le programme de marche normale, et d'autres programmes accessoires mais importants qui consistent dans la surveillance du fonctionnement de la machine pour prévoir les pannes, par ex elle déclenche un vérin pneumatique qui doit normalement mettre 0,5 seconde pour arriver en bout de course, et elle attendrait sans rien faire? Pas du tout elle peut faire des milliers dopérations en o,5s, voire des millions si elle est programmée en assembleur (les MIPS, c'est uniquement en assembleur!) va tester des températures, des vitesses de mobiles de la machine, elle fait une armée de contrôles, fait des statistiques, en déduit ce qui s'use, anormalement ou pas, elle fait tout ce qu'un ouvrier sérieux peut faire pour surveiller et entretenir la machine en plus de son travail normal, pour elle une tempo n'existe pas, alors une interruption de timer ou autre la rappelle à son travail normal. Qu'un timer, qui ne peut faire autre chose, fasse du comptage, oui, mais gaspiller le temps processeur en le bloquant à ne rien faire non, voilà la différence entre bonne et mauvaise programmation.
Donc je l'ai toujours dit aux jeunes: arrêtez de faire des boucles de tempo, il y a mieux à faire!
Si vous avez l'occasion, visitez la salle des machines d'un bateau diesel-électrique, le MARION-DUFRESNE, là vous verrez du véritable automatisme bien conçu. Et visitez aussi plein de sociétés où vous verrez du matériel tristement mal automatisé, qui tombe en panne sans prévenir, mais ne communique rien à l'opérateur. Il n'y a d'ailleurs aucune interface de dialogue, aucun moyen de contrôle.
Bonne programmation,
pont
Commenter la réponse de pont
Messages postés
9
Date d'inscription
mardi 25 novembre 2008
Dernière intervention
7 juillet 2010
29 sept. 2009 à 19:27
0
Merci
merci pour tout tes conseils, en fait tu sais, je suis encore à mes debut en assembleur et j'aimerais vraiment macher assembleur , saurais-tu me conseiller un site ou suivre pas à pas pour debutant enfin de devenir un jour genie d'assembleur?
merci d'avance
Commenter la réponse de vita01

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.