Est-il possible de multiplier par un immédiat avec mul en x86 Assemblée?
Je suis à l'apprentissage de l'assemblée x86 à l'aide de DosBox l'emulateur. Je suis en train d'effectuer la multiplication. Je ne comprends pas comment il fonctionne. Quand j'écris le code suivant:
mov al, 3
mul 2
J'obtiens une erreur. Bien que, dans la référence, je suis en utilisant, il est dit dans la multiplication, il suppose que AX est toujours le titulaire de place, donc, si j'écris:
mul, 2
Il multiplie al
valeur par 2. Mais il ne fonctionne pas avec moi.
Quand j'ai essayer le suivant:
mov al, 3
mul al,2
int 3
- Je obtenir de résultat 9 dans ax. Voir cette photo pour la clarification:
Une autre question: puis-je multiplier à l'aide de l'emplacement de la mémoire directement? Exemple:
mov si,100
mul [si],5
OriginalL'auteur user2192774 | 2013-12-10
Vous devez vous connecter pour publier un commentaire.
Il n'y a aucune forme de
MUL
qui accepte un opérande immédiat.Faire de
ou:
ou:
ou:
imul ax, 2
le produit est dans AX (pas dans DX:AX).Notez également que
imul
immédiate est un 3-l'opérande de l'instruction. De sorte que vous pouvez l'utiliser de manière non destructive, commeimul cx, si, 1234
. La plupart des assembleurs vous permettent d'écrire desimul cx, 1234
comme un court de main pourimul cx, cx, 1234
, semblable à l'écriture devaddps ymm0, ymm1
au lieu devaddps ymm0, ymm0, ymm1
: c'est à dire lorsque l'heure d'été = src1.OriginalL'auteur Michael
Intel manuel
La Intel ® 64 et IA-32 Architectures Software developer's Manual - Volume 2 l'Instruction de Référence - 325383-056US septembre 2015
la section "MUL - Unsigned Multiplier" colonne
Instruction
contient uniquement:r/mXX
moyens registre ou mémoire: donc immédiates (immXX
) commemul 2
ne sont pas autorisés dans les formes: le processeur n'est tout simplement pas en charge cette opération.Cela répond aussi à la deuxième question: il est possible de multiplier par la mémoire:
Et montre aussi pourquoi des choses comme
mul al,2
ne fonctionnera pas: il n'y a pas de forme qui prend deux arguments.Comme mentionné par Michael toutefois,
imul
ne l'immédiat à des formes commeIMUL r32, r/m32, imm32
et bien d'autres quimul
ne pas.OriginalL'auteur Ciro Santilli 新疆改造中心 六四事件 法轮功