Flux rss
Collection CommentCaMarche.net

Assembleur - Multiplication par une constante

Publié par kilian, dernière mise à jour le vendredi 1 août 2008 à 17:53:10 par kilian
En assembleur vous pouvez effectuer une multiplication en utilisant les instructions mul (nombres non signés) et imul.
On l'utilise ainsi:
mul nom_registre

Ensuite en interne, le processeur multiplie le contenu de eax ou ax ou al (selon la taille du registre donné en paramètre) puis stocke le résultat dans eax ou ax pour la partie "poids faible" du résultat et dans edx ou dx pour la partie "poids fort" du résultat, si le registre passé en paramètre de mul est supérieur à un octet.

Utiliser mul est un peu lourd car il faut déplacer la valeur multipliée dans eax, la valeur à multiplier dans un autre registre et le registre de résultat sera obligatoirement eax, ce qui écrase la valeur qu'il possédait.

Toutefois, si vous désirez juste multiplier un registre par une constante et mettre le résultat dans le registre de votre choix, vous pouvez utiliser un raccourci avec l'instruction "lea" (load effective address). Cette instruction sert à récupérer l'adresse d'une donnée en mémoire.
lea registre_destination, [adresse_mémoire] ; place adresse_memoire dans registre_destination

Le gros avantage est que, en lieu et place de l'adresse mémoire, vous pouvez mettre une multiplication ou une addition d'un registre par une constante.

Imaginons donc que vous vouliez multiplier ecx par 7 et mettre le résultat dans ebx, la commande serait la suivante:
lea ebx, [ecx * 7]


Voilà donc pour le raccourci bien pratique. Malheureusement vous ne pouvez pas multiplier deux registres ensemble par ce raccourci.
Exercice assembleur x86 nombre premier Introduction Notions abordées dans cet exercice Enoncé Rappel Corrigé Explication Introduction Ce petit exercice d'assembleur vise les architectures x86 (Processeurs Intel et Amd 32 bits) et utilise la syntaxe de Nasm, un assembleur... www.commentcamarche.net/faq/sujet-9863-exercice-assembleur-x86-nombre-premier
Assembler un PC De l'assemblage d'un ordinateur Un ordinateur de type PC est modulaire, c'est-à-dire qu'il peut être monté en assemblant des éléments matériels de différents constructeurs, afin d'obtenir un ordinateur conforme à ses besoins. Les éléments... www.commentcamarche.net/contents/assemblage/monter.php3
Introduction à l'assembleur Les prérequis nécessaires Le langage assembleur est très proche du langage machine (c'est-à-dire le langage qu'utilise l'ordinateur : des informations en binaire, soit des 0 et des 1). Il dépend donc fortement du type de processeur. Ainsi il... www.commentcamarche.net/contents/asm/assembleur.php3
[Photofiltre]Réaliser un assemblage de 2 imagesPhotofiltre est un logiciel de retouche d'image. Cette astuce fonctionne aussi bien avec Photofiltre qu'avec Photofiltre Studio Dans ce cas précis, Photofiltre va permettre d'assembler un collage c'est-à-dire de coller une deuxième image (en... www.commentcamarche.net/faq/sujet-7719-photofiltre-realiser-un-assemblage-de-2-images
Compiler un programme assembleur avec NasmAvec Linux Etape 1. Créer un fichier source Etape 2. Assembler le fichier source Etape 3. Création de l'executable Etape 4. Execution du programme Avec windows Etape 1. Installer les logiciels nécessaires Etape 2. Créer un fichier... www.commentcamarche.net/faq/sujet-9836-compiler-un-programme-assembleur-avec-nasm
Liens utiles assembleur x86Voici quelques liens utiles pour l'assembleur x86. Le but étant de compiler des documents pertinents autant pour ceux qui débutent que pour ceux qui sont à l'aise dans ce domaine. Tutoriels Références complètes Assembleur sous... www.commentcamarche.net/faq/sujet-9899-liens-utiles-assembleur-x86
Table de multiplication sous forme de table C (Résolu)Bonjour, J'ai un probleme au niveau d'affichage d'une table de multiplication sous forme de table en utulisant le langage C ,au fait je suis debutante et j'aimerai bien que vous m'aideriez . la table de multiplication doit... www.commentcamarche.net/forum/affich-3826012-table-de-multiplication-sous-forme-de-table-c
[ C ] Tables de multiplication (Résolu)Salut à tous.... Je suis entraint de faire des exercices en C et je bug sur un (enfin pour l'instant il n'y a que un), Il est question d'afficher les tables de multiplication de 1 à 9 en utilisant les boucle... J'ai pas mal... www.commentcamarche.net/forum/affich-2982657-c-tables-de-multiplication
Nouveau PC via un assembleur : bug écran bleu (Résolu)Bonjour à tous; je viens de faire monter par un assembleur un super PC sur mesure( 1400€)...mais ...qui ne fonctionne pas ! En effet , il a fonctionné quelques minutes , j'y ai installé Norton et un CPL et il s'est arrêté tout seul lors de... www.commentcamarche.net/forum/affich-2450909-nouveau-pc-via-un-assembleur-bug-ecran-bleu
Télécharger NasmNasm est un logiciel assembleur libre et disponible sur plusieurs systèmes comme Linux ou Windows. Toutefois il ne fonctionne que sur les architectures x86. Il demande une syntaxe légère et compte donc parmi le choix de nombreux programmeurs. www.commentcamarche.net/telecharger/telecharger-34055381-nasm
50 ans d'archives de l'Assemblée nationale sur Internet(Paris - Relax news) - A l'occasion du 50ème anniversaire de la première séance de la première législature de la Ve République, qui s'est tenue le 9 décembre 1958, l'Assemblée nationale met en ligne tous les comptes rendus de séance de ces cinquante... www.commentcamarche.net/actualites/50-ans-d-archives-de-l-assemblee-nationale-sur-internet-5847949-actualite.php3
VBScript - Les constantesQu'est-ce qu'une constante ? Une constante est un nom, facilement mémorisable, remplaçant une valeur (nombre, chaîne, etc.) qui ne change pas. L'objectif d'une constante est d'une part de permettre de rendre un programme plus lisible, d'autre part... www.commentcamarche.net/contents/vbscript/vbs-constantes.php3
Branchements en assembleurOn appelle saut (ou branchement) en assembleur le fait de passer à une instruction autre que celle qui suit celle en cours en mémoire. En effet, en temps normal (c'est-à-dire sans instruction contraire) le processeur exécute les instructions... www.commentcamarche.net/contents/asm/saut.php3
Les procédures en assembleurLa notion de procédure En langage assembleur, on appelle procédure un sous-programme qui permet d'effectuer un ensemble d'instructions par simple appel de la procédure. Cette notion de sous-programme est généralement appelée fonction dans d'autres... www.commentcamarche.net/contents/asm/procedure.php3