Bonjour,
Comment faire la division assumbleur 32 bits??
Bonjour,
Comment faire la division assumbleur 32 bits??
comme en 16 bits, avec DIV
merci , j'ai écrit cette code mais ne fonctionne pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 asm mov eax,a ; mov ebx,b; DIV ebx; mov c,eax; end;
c'est comme pour une division en 16 bits.
si le diviseur = 32 bits alors le dividande = 64 bits, or eax = 32 bit.
eax doit donc être étendu à 64 bits grâce au registre edx (edx= poids fort)
si ta valeur dans eax est positive, il suffit de placer 0 dans edx.
par contre, si la valeur de eax est négative, il faut placer -1 dans edx
Heureusement, pour simplifier les choses, il y a l'instruction CDQ qui donne la valeur correcte à edx
pour une valeur signée dans eax
j'ai seulement les valeurs positive
comment placer 0 dans eax
Il faut mettre 0 dans edx et non eax
pour mettre à 0 un registre, tu as plusieurs solutions:
- mettre la valeur immédiate avec un mov (comme dans ton exemple quand tu mets "a" dans eax)
- faire un "ou exclusif" (xor) du registre avec lui-même
- faire une soustraction (sub) du registre avec lui-même
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager