-------------------------------
Réponse au message :
-------------------------------
Voilà comment il faut procéder:
tu à un nombre en hexadécimal dans un registre de processeur, nous allons convertir ce nombre en décimal:
-le nombre est par exemple dans eax
-tu divise ce nombre par dix
mov edx, 0
mov esi, 10
div esi
-tu a alors le reste de la division dans edx, il faut maintenant convertir ce nombre en ascii pou cela tu ajoute tout simplement le caractère "0"
add dl, "0"
-mais ce reste est le chiffre décimal de poids le plus faible il faudra donc l'afficher en dernier on met donc ce chiffre sur la pile
push dx
-il faut également savoir combien de chiffre tu a donc à chaque fois que tu pousse le reste sur la pile tu écremente cx
inc cx
-quand le reste est 0 c'est fini donc tu peu commencer à desempiler la pile.
;---------------------------------------
;la première routine est donc:
mov esi, 10
mov cx, 0
;-----------------
routine1:
mov edx 0
div esi
add dl, "0"
push dx
inc ecx
cmp ax, 0
jne routine1
;--------------------------------------
-il suffit en suite de désempiler les caractères 1 par 1 et de les placer dans un buffer il faut donc placer l'adresse de ce buffer dans un registre.
mov dx, buffer (offset buffer)
-tu désempile le caractère
pop ax
-tu met le caractère dans le buffer
mov byte [bx], al
-tu incrémente dx
inc bx
-puis puisque tu à dans cx le nombre de caractère enpilé tu recommence cette boucle le nombre de fois que donne cx
-loop routine2
;-----------------------------------------------------------
;la deuxième boucle est donc
mov bx, buffer
;-----------------------
routine2:
pop ax
mov byte [bx], al
inc bx
loop routine2
-puis si tu est sous ms-dos tu finis par
mov byte [bx], "$"
;------------------------------------------------------------
;------------------------------------------------------------
;routine complète
mov eax, nombre
mov esi, 10
mov cx, 0
;-----------------
routine1:
mov edx 0
div esi
add dl, "0"
push dx
inc ecx
cmp ax, 0
jne routine1
mov bx, buffer
;-----------------------
routine2:
pop ax
mov byte [bx], al
inc bx
loop routine2
;-----------------------
mov byte [bx], "$"
;-------------------------------------------------------------
;-------------------------------------------------------------
-voilà tu à dans ton buffer la chaine à afficher
-pour changer de base il suffit de changer la division (diviser par 2, 4, 8, 10)
si tu a un problême
prunkdump> bonjour a tous...
>
> j'ai besoin d'un petit programme qui effectuerai la conversion d'un nombre entré au clavier en base 2,8,10,16
> ou quelque choes qui y ressemble merci d'avance
> ou bien des idées sur comment je pourrai y arriver merci bcp d'avance....