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

  FORUM HardWare.fr
  Programmation
  ASM

  [ASM] Conversion entier en chaine decimal

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[ASM] Conversion entier en chaine decimal

n°672334
players
Posté le 12-03-2004 à 20:36:14  profilanswer
 

Salut,
 
J'ai un petit soucis avec le programme suivant, il sert a convertir un entier contenu dans AX, il fonctionne trés bien sauf pour les nombres supérieur à 32767. Sans utiliser div/idiv ou autre, savez vous comment le modifier pour qu'il fonctionne pour les nombres supérieur à 32767 ? Merci d'avance.
 

Code :
  1. ;;*********************************************************************
  2. ;; ITOD
  3. ;; Param entrée: SI (nombre de case du tableau) AX (valeur entiere)
  4. ;; Affiche un entier en decimal de 1 à 8 caracteres
  5. ;; *******************************************************************       
  6. itod PROC NEAR
  7.   PUSH CX
  8.   PUSH DS
  9.   PUSH DX
  10.   PUSH BX
  11.   ;;-------------------------------------------
  12. debutd: 
  13.   MOV CX,donlib
  14.   MOV DS,CX
  15.        
  16.   ;; Sauvergarde de la taille tableau voulu
  17.   MOV tailleTAB,SI       
  18.        
  19.   ;; Initialisation tableau
  20. initia:
  21.   MOV SI,0
  22. initiaDATA:   
  23.   ;; Boucle pour initialiser le tableau
  24.   CMP SI,tailleTAB
  25.   JG debut2d
  26.   MOV byte ptr[TABD+SI],'0'
  27.   INC SI
  28.   JMP initiaDATA
  29.        
  30. debut2d:
  31.   MOV SI,tailleTAB
  32.   MOV BX,AX              ;On rentre nombre dans BX
  33.   MOV CX,10                  ;On rentre 10 dans CX
  34. boucle: 
  35.   MOV DX,0                   ;Initialisation de DX à 0
  36.   CMP BX,CX                  ;On compare BX avec CX
  37.   JL suited                   ;Si BX<CX on jump à suite
  38. boucle2:
  39.   SUB BX,CX                 ;On soustrait CX à BX
  40.   INC DX                    ;Incrémentation de DX
  41.   CMP BX,CX                 ;On compare BX avec CX
  42.   JGE boucle2               ;Si BX>=CX, jump à boucle 2
  43.   MOV BYTE PTR[TABD+SI],'0' ;On indique qu'on rentre un chiffre ds le tab
  44.   ADD BYTE PTR[TABD+SI],BL  ;On rentre le nombre BL dans le tab
  45.   MOV BX,DX                 ;On copie DX dans BX
  46.   DEC SI                    ;On décrémente SI
  47.   JMP boucle                ;Jump à boucle
  48. suited: 
  49.   MOV BYTE PTR[TABD+SI],'0' ;On indique qu'on rentre u nchiffre ds le tab
  50.   ADD BYTE PTR[TABD+SI],BL  ;Et on rentre le dernier chiffre du nombre
  51.   MOV SI,0
  52. aff:   
  53.   ;; Boucle pour afficher le 1er jusqu'a SI eme du debut
  54.   CMP SI,tailleTAB
  55.   JG finitod
  56.   MOV AH,0
  57.   MOV AL,byte ptr[TABD+SI]
  58.  
  59.   MOV DX,AX
  60.   MOV AH,2             
  61.   INT 21H
  62.  
  63.   INC SI
  64.   JMP aff
  65. finitod:
  66.   POP BX
  67.   POP DX
  68.   POP DS
  69.   POP CX
  70.   ;;--------------------------------------
  71.   RET
  72. itod ENDP

mood
Publicité
Posté le 12-03-2004 à 20:36:14  profilanswer
 


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

  [ASM] Conversion entier en chaine decimal

 

Sujets relatifs
[ASM GNU x86] Problème de segmentation fault [Résolu]verifier le dernier caractère d'une chaine
openGL et ASM (poss de direct 3d)executer une chaine de caractere
Modifier en chaine héxadécimalExtraction dans une chaine pour mettre en variable
Division sous DOS: résultat en nombre décimal[DOS] Renommer des fichiers + ajout de chaine de caractères
[C/ASM] Traduction C ASM[C] Question sur strtol (conversion de char* en int)
Plus de sujets relatifs à : [ASM] Conversion entier en chaine decimal


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