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

  FORUM HardWare.fr
  Programmation

  ASM: Conversion ascii > hexa > decimal

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

ASM: Conversion ascii > hexa > decimal

n°95017
Angelicca
Posté le 30-01-2002 à 17:29:47  profilanswer
 

bonjour,
 
qqn pourrait m'explique comment convertir en asm une suite de caractéres ASCII en hexa puis en décimal ? Je vous donne un exemple :
 
angel en hexa donne 616E67656Ch et 616E67656Ch en décimal donne 418464097644, je voudrai donc obtenir cette procédure en asm pour l'insérer ensuite dans mon proggie mais je ne sais pas comment faire ... de plus je souhaiterai savoir si cela est valable pour x caractéres ? (x == l'infini)
 
Merci à vous !

mood
Publicité
Posté le 30-01-2002 à 17:29:47  profilanswer
 

n°95051
Angelicca
Posté le 30-01-2002 à 18:42:17  profilanswer
 

[:belgarion_cer]  
 
 
 
Personne ne prog en asm ?   ;)

n°95069
Ventilo
Ventilo? Depuis 1998!
Posté le 30-01-2002 à 19:11:36  profilanswer
 

Angelicca a écrit a écrit :

 
Personne ne prog en asm ?   ;)  




 
Pas moi  :ange:

n°95071
PompUsine
Leg9 ça suce bien !
Posté le 30-01-2002 à 19:13:15  profilanswer
 

Très difficile l'ASM.... bon courage et mes respects ! :jap:


---------------
Leg9 : Pédé de service, pipes gratuites.
n°95073
Angelicca
Posté le 30-01-2002 à 19:15:05  profilanswer
 

PompUsine a écrit a écrit :

Très difficile l'ASM.... bon courage et mes respects ! :jap:  




 
disons que c'est plus un jeu qu'autre chose, c'est amusant de manier des registres  :)
 
 :hello:

n°95074
Bruce
Music 4 your ears!
Posté le 30-01-2002 à 19:15:08  profilanswer
 

Pkoi en asm ?


---------------
A+++ Bruce - http://www.bheller.com
n°95075
PompUsine
Leg9 ça suce bien !
Posté le 30-01-2002 à 19:16:36  profilanswer
 

Parceque l'ASM en fait c'est ZE langage...
Tu peux tout faire en ASM, ce que tu peux faire en JAVA, C, C++... tu peux le faire en ASM, mais tu ne peux pas forcément faire l'inverse  :wahoo:


---------------
Leg9 : Pédé de service, pipes gratuites.
n°95077
Angelicca
Posté le 30-01-2002 à 19:18:35  profilanswer
 

Bruce a écrit a écrit :

Pkoi en asm ?  




 
comme ça en fait  :)  ,disons que mon prog est en une partie en C++, et une autre partie en asm ( avec asm {} ) et je suis interessé par ce genre de conversion de bas niveau capable d'etre effectuées en asm ...
 
voila  
 
 :hello:

n°95078
Ventilo
Ventilo? Depuis 1998!
Posté le 30-01-2002 à 19:19:46  profilanswer
 

PompUsine a écrit a écrit :

Parceque l'ASM en fait c'est ZE langage...
Tu peux tout faire en ASM, ce que tu peux faire en JAVA, C, C++... tu peux le faire en ASM, mais tu ne peux pas forcément faire l'inverse  :wahoo:  




 
Bien en fait moi je dit le contraire, en C++ tu peux incorporer du ASM donc tu peux tout faire ce que ASM peut faire et encore plus  :na:

n°95079
bjone
Insert booze to continue
Posté le 30-01-2002 à 19:20:51  profilanswer
 

pour l'hexa en binaire pur, tu prends chaque chiffre hexa
de gauche à droite
 
registre final<-0
 
pour chaque chiffre  
    shift registre final 4 bits vers la gauche
   
    si <= '9'          (0 à 9)
      registre temporaire<-chiffre-'0'
    sinon              ('A' à 'F' ou 'a' à 'f';)
      si chiffre > 'F'
         chiffre = chiffre + 'A' - 'a' (conversions caps)
      finsi
    registre temporaire<-chiffre-'A'+ 10
  finsi
   
  registre final <- reg final OU LOGIQUE reg temporaire
 
fin pour
 
valà

 

[edtdd]--Message édité par bjone--[/edtdd]

mood
Publicité
Posté le 30-01-2002 à 19:20:51  profilanswer
 

n°95082
bjone
Insert booze to continue
Posté le 30-01-2002 à 19:24:31  profilanswer
 

l'asm est très simple et basique....
ça colle avec l'algo....
 
quand on sait faire de l'asm, on est capable de voir les problèmes avec beaucoup plus de simplicité...
c ce qui manque à beaucoup de programmeurs la simplicité...

n°95084
bjone
Insert booze to continue
Posté le 30-01-2002 à 19:32:17  profilanswer
 

en asm x86 ça donnerai un truc dans ce gout: (version code de warrior pas décidé :D)
 
esi <= chaine de caractère
ecx <= longueur  
 
xor eax,eax
xor ebx,ebx
 
lp:
  shl eax,4
  mov bl,[esi]
  cmp bl,'9'
  ja AZrange
  sub bl,'0'
  jmp ok
AZrange:
   cmp bl,'Z'
   jbe AZOk
   add bl,'A'-'a'
AZOk:
   add bl,10-'A'
ok:
  or eax,ebx
  inc esi
  dec ecx
  jnz lp
 
eax <= valeur

n°95095
bjone
Insert booze to continue
Posté le 30-01-2002 à 19:45:49  profilanswer
 

reg src <= valeur
 
tant que reg src > 9
   reg src ; reg reste <- reg src/10
   ajouter reg reste + '0' à la chaine
   et avancer dans la chaine vers la gauche :D
fin tant que
ajouter reg src + '0' à la chaine
 
heu c ça ? :crazy:
 
putainnnnnnnnnn je dois réfléchir
 
donc la valeur 100  
 
reg src <- 100
 
passe 1
  div 10
  reg src <- 10
  reste 0
  chaine=>          0
passe 2
  div 10
  reg src <- 1
  reste 0
  chaine =>        00
fin src < 10
chaine =>         100
 
donc en asm:
 
edi : pointe sur la "fin" d'un tableau d'au moins 14 caractères
 
eax <- valeur src
 
mov ebx,10
lp:
  cmp eax,9
  ja fini
   
  xor edx,edx  
 
  div ebx  
  (division de edx:eax par ebx, 64 bits/32bits => 32 bits)
 
  add dl,'0'
  mov [edi],dl
  inc edi
  jmp lp
 
fini:
 
add al,'0'
mov [edi],al
 
vala...
à toi de rajouter la gestion du signe si tu veux, et de corriger si j'ai marqué des conneries...

 

[edtdd]--Message édité par bjone--[/edtdd]

n°95102
bjone
Insert booze to continue
Posté le 30-01-2002 à 20:06:10  profilanswer
 

c vrai que pris comme ça c pas lisible :D :lol: :crazy:
enfin une petit révision..... ça fait po de mol

n°95135
Angelicca
Posté le 30-01-2002 à 22:20:07  profilanswer
 

merci bjone, je vais étudier ça
 
 :hello:

n°95500
rastan
Posté le 31-01-2002 à 20:58:55  profilanswer
 

Ca me semble plus complique que ca la conversion hexa -> numerique surtout si la chaine hexa peut etre infini... pour ascii hexa en asm par contre c'est bcp plus facile :)
 
 char *Ascii;
 char *Hex;
 
 Ascii=new char[256];
 Hex=new char[256];
 sprintf(Ascii,"angel" );
 
 __asm
 {
  // Ascii pointeur sur car, chaine terminée par 0
  // Hex pointeur sur car, chaine terminée par 0
  mov edx,Ascii
  mov ebx,Hex
whileptpas0:
  mov cl,[edx]
  cmp cl,0
  je  FinWhile
  //cl=Ascii[i]>>4
  sar cl,4
  //if(c>9)
  cmp cl,9
  jle Infa9
  add cl,37h //'A'-10
  jmp Suite
Infa9:
  add cl,30h // '0'
Suite:
  mov [ebx],cl
  inc ebx
  mov cl,[edx]
  //c=Ascii[i]& 0fh
  and cl,0fh
  cmp cl,9
  jle Infa9_2
  add cl,37h //'A'-10
  jmp Suite_2
Infa9_2:
  add cl,30h // '0'
Suite_2:
  mov [ebx],cl
  inc ebx
  inc edx
  jmp whileptpas0
FinWhile:
  mov byte ptr[ebx],0 // 0 final sur la chaine Hex
 
 }
 
 
 printf("%s\n",Hex);
 delete []Ascii;
 delete []Hex;

n°95526
benou
Posté le 31-01-2002 à 22:26:28  profilanswer
 

aïe aïe aïe ... je suis content d'être né 20 ans plus tard et de pas avoir eu tout ca à me patoger !!  
 
vive le java !!!!! :D

 

[edtdd]--Message édité par benou--[/edtdd]


---------------
ma vie, mon oeuvre - HomePlayer
n°95532
bjone
Insert booze to continue
Posté le 31-01-2002 à 22:59:01  profilanswer
 

:lol:
 
c clair c rapidement illisible....
c pour ça qui faut garder l'asm pour les routines critiques en temps...


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

  ASM: Conversion ascii > hexa > decimal

 

Sujets relatifs
Conversion Word vers HTML "Intelligente" ???Conversion de nombres
[unix-awk] comment définir 1 caractère pas son code ascii sous unix ?[ C ] fonction pour recuperer le code ASCII d'un caractere HELP !!!
[SQL]conversion de type[C] Caracteres ASCII dans une chaine
[VB] Convertion décimal > binaireConversion de caractères accentués Frontpage exp, avec Dreamwaver
Recuperer le code ascii d'un char*ASCII de VC++ + WIn2000
Plus de sujets relatifs à : ASM: Conversion ascii > hexa > decimal


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