Flux rss

Assembleur - Multiplication par une constante

Bookmark Ajouter aux favoris / Partager
Dernière mise à jour le 1 août 2008 à 17:53 par kilian
Publié 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
VBScript - Les constantes Qu'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
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
[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
Notice: Use of undefined constant include PHP (Résolu)Bonjour, j'ai mis un iclude "config.php" avec mes constants seulement il me met ce message d'erreur "Notice: Use of undefined constant". Que dois-je faire ? merci www.commentcamarche.net/forum/affich-5053892-notice-use-of-undefined-constant-include-php
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 l'ouverture... www.commentcamarche.net/forum/affich-2450909-nouveau-pc-via-un-assembleur-bug-ecran-bleu
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 etre comme ca | 1 2 3 4 ----... www.commentcamarche.net/forum/affich-3826012-table-de-multiplication-sous-forme-de-table-c
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
Introduction à l'assembleurLes 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
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
Liste des instructions en assembleurTableau des principales instructions en assembleur Voici une liste (non exhaustive) des principales instructions en assembleur des processeurs 80x86, ainsi que du code machine qui leur est associé et de leur taille en mémoire. Les valeurs val et... www.commentcamarche.net/contents/asm/liste.php3