Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1804 connectés 

  FORUM HardWare.fr
  Programmation
  ASM

  [ASM[ Problème de conversion

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ASM[ Problème de conversion

n°590449
nolimites
Z'avez pas vu Mirza?
Posté le 14-12-2003 à 15:31:42  profilanswer
 

Bonjour voici un code asm qui convertit un nombre binaire vers de l'ascii. Mais je dois modifiier ce code pour qu'il convertisse de l'hexadecimal vers de l'ascii et ce en lieu et place du binaire. Pourriez vous m'aider svp car la je patauge complètement.
 
Merci d'avance
 
 
 
TITLE bin2ascii.asm
 
.MODEL small
.STACK
;-------------------------------------------------------
.DATA
acNbre DB "00000000$"
;-------------------------------------------------------
.CODE
MAIN:
;--------DS INITIALISATION--------
 
mov ax,@DATA
mov ds,ax
xor ax,ax
;---------------------------------
mov al,00001101b ;Nombre binaire a convertir
mov bx,0 ;compteur
 
bcl_debut:
cmp bx,8 ;si compteur = 8 (car 8bits) -->
je BCL_FIN ;arreter
mov cl,al ;on sauve al dans cl
and cl,10000000b ;on isole le b7
 
jz pas_ajout ;si le resultat != 0 --> ZF = 0
inc acNbre[bx] ;--> on met 1 dans acNbre
;sinon au effectue le saut
pas_ajout:
rol al,1 ;on decale de 1bit vers la gauche
inc bx ;incrementation du compteur
jmp bcl_debut ;on continue
bcl_fin:
lea dx,acNbre ;affichage du nombre
mov ah,9
int 21h
 
 
;------------------DOS RETURN-----------------
 
mov ax,4C00h ;retour au dos avec code d'exit 0
int 21h
 
;------------------------------------------------------------------
END MAIN
 

 

mood
Publicité
Posté le 14-12-2003 à 15:31:42  profilanswer
 

n°590576
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-12-2003 à 18:25:57  profilanswer
 

tu pourrais expliquer ton algo, parce que là je vois pas du tout la logique que tu emploies ! ça marche surement (j'imagine que tu as testé), mais j'avoue que je me demande comment [:meganne]
 
tu assembles avec quoi et sous quel OS ? parce que là, tu es en train de faire du code 16 bits, avec initialisations de segments et tout (le truc archi dépassé quoi), et en plus, t'as oublié les directives ASSUME pour déclarer les segments
 
enfin ce genre de code

Code :
  1. cmp bx,8 ;si compteur = 8 (car 8bits) -->
  2. je BCL_FIN ;arreter


pourrait être évité en utilisant CX à la place de BX et en utilisant l'instruction LOOP


---------------
J'ai un string dans l'array (Paris Hilton)
n°590697
chrisbk
-
Posté le 14-12-2003 à 20:57:18  profilanswer
 

Harkonnen a écrit :

tu pourrais expliquer ton algo, parce que là je vois pas du tout la logique que tu emploies ! ça marche surement (j'imagine que tu as testé), mais j'avoue que je me demande comment [:meganne]
 
tu assembles avec quoi et sous quel OS ? parce que là, tu es en train de faire du code 16 bits, avec initialisations de segments et tout (le truc archi dépassé quoi), et en plus, t'as oublié les directives ASSUME pour déclarer les segments
 
enfin ce genre de code

Code :
  1. cmp bx,8 ;si compteur = 8 (car 8bits) -->
  2. je BCL_FIN ;arreter


 
 
pourrait être évité en utilisant CX à la place de BX et en utilisant l'instruction LOOP
 


 
 
snul loop, cmp/jxx smieux


Message édité par chrisbk le 14-12-2003 à 20:57:38
n°590734
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 14-12-2003 à 22:40:08  profilanswer
 

chrisbk a écrit :


 
 
snul loop, cmp/jxx smieux


toi t'as trop lu l'optimization guide d'AMD [:ddr555]
clair que 8 cycles pour le loop, c'est lent. mais je lui ai conseillé le loop car comme son code sera surement lancé sous Windows, il est possible que ça pète car (E)BX est utilisé en interne par Windows. et comme nolimites ne l'a pas empilé, vaut mieux prévenir que guérir :/


---------------
J'ai un string dans l'array (Paris Hilton)
n°590757
bjone
Insert booze to continue
Posté le 14-12-2003 à 23:19:37  profilanswer
 

Harkonnen a écrit :


toi t'as trop lu l'optimization guide d'AMD [:ddr555]
clair que 8 cycles pour le loop, c'est lent. mais je lui ai conseillé le loop car comme son code sera surement lancé sous Windows, il est possible que ça pète car (E)BX est utilisé en interne par Windows. et comme nolimites ne l'a pas empilé, vaut mieux prévenir que guérir :/


 
bah c'est aussi valable pour le 386, il me semble.... (cycles loop > cycles cmp/jxx)


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  ASM

  [ASM[ Problème de conversion

 

Sujets relatifs
problème d' offset initial d'un JScrollPane et de requestFocusExercice d'algo [probleme resolu par Tentacle, algo p2 poste par Giz]
[C++ 10 lignes inside] Probleme avec programme de cryptage XORprobleme chez free
Problème avec ZipFile et InputStreamProblème avec for_each
probleme sql avec insert intoSHELL/TCSH : Probleme sur un script automatique
exif_imagetype probleme[C] Probleme exec dans un fork :D
Plus de sujets relatifs à : [ASM[ Problème de conversion


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR