IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Assembleur Discussion :

Conversion Nombre -> Texte


Sujet :

Assembleur

  1. #1
    Futur Membre du Club
    Inscrit en
    Janvier 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 7
    Points : 5
    Points
    5
    Par défaut Conversion Nombre -> Texte
    Salut,

    Je voudrais savoir comment on fait pour transformer un nombre en chaine de caractère (pour l'afficher)

    [ Isis ]

  2. #2
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    slt,

    Je vais essayer de te répondre sans me planter (sinon y aura bien qqn pour me rattraper).

    Donc tu veux prendre un nombre par ex.: 139 et l'écrire à l'écran.
    Il faut pour cela transformer ton nombre en code ascii

    1°) Tu dois convertir chaque chiffres en code ascii.
    Voici une petite table :
    chiffre code ascii
    0 48
    1 49
    2 50
    3 51
    4 52
    5 53
    6 54
    7 55
    8 56
    9 57
    Donc en regardant cette table tu t'apperçoit que tu dois prendre ton chiffre et lui rajouter 48 (!!! ATTENTION DECIMAL !!!).

    2°) Convertion d'un nombre
    Le nombre que l'on veut convertir est 139.
    Tu prend le 1° chiffre ici 1
    1 + 48 = 49
    le 2°
    3 + 48 = 51
    le 3°
    9 + 48 = 57
    Tu peux vérifier par rapport au tableau, les résultats sont corrects et tu sait aussi vérifier via ton clavier en appuyant sur la touche alt + le code ascii (alt + 49 = 1).

    A partir de maintenant il y a plusieurs solution, je vais en donner qu'une seule.

    Faire une petite boucle pour écrire le code ascii 49 ensuite le code ascii 51 et pour finir le code ascii 57.

    Voilà tu viens de transformer ton nombre décimal en code ascii que tu as imprimer à l'écran.

    Je pense que c'est plus au moins bon si tu comprends pas je veux bien te faire une petite routine.

    ++

  3. #3
    Futur Membre du Club
    Inscrit en
    Janvier 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci pour ton explication, c'est beaucoup plus clair a présent, mais comment extraire un seul chiffre d'un nombre décimal.

    Pour un nombre hexa c'est facile puisque il suffit d'isoler 4 bits mais pour un nombre décimal ?

    [ Isis ]

  4. #4
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    Ton nombre tu le rentre au clavier ou il se trouve dans une variable

    Si il se trouve dans une variable, il suffit que tu le déclare dans un tableau comme ca tu pourras aller chercher le chiffre que tu voudras.

    Si tu le rentre au clavier, il y a plusieurs solution, moi j'en connais une qui est assez compliquée (pas qu'elle soit difficile mais qu'il existe une autre solution beaucoup plus facile), ma solution :

    inscrire le caractère taper au clavier dans un tableau -> avancer le pointeur du tableau -> inscrire le caractère taper au clavier dans un tableau -> avancer le pointeur du tableau -> etc. jusqu'au moment où tu as le nombre de caractère voulu (dans cette solution, tu dois initialiser le tableau avec des 0 par ex. car si tu n'utilise pas tout le tableau tu risque d'avoir des problèmes).

    L'autre solution est d'utiliser un buffer organiser, je sait que ça existe mais je ne l'ai jamais utilisé.

  5. #5
    Futur Membre du Club
    Inscrit en
    Janvier 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Le nombre est enregistré dans une variable mais tu pourrai détailler un peu plus la méthode a utiliser dans ce cas là...


    [ Isis ]

  6. #6
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    Heu oubli ce que j'ai dit avec le tableau c beaucoup plus compliqué avec un tableau.

    J'ai fais avec ta méthode c'est à dire le nombre est dans une variable (ici elle s'appelle nb)

    Voilà un petit programme qui permet de convertir un nombre et de l'imprimer à l'écran.

    Si tu ne comprends pas le code je peux t'expliquer en plus détailer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    .model small
    .stack 100h
    .486
     
    .data
    ; Je déclare le nombre en word
    nb    DW     139
    ; La chaîne de caractère à imprimer à l'écran
    affnb DB    '   ','$'
    un    DW    1
    dix   DW    10
     
    .code
    main proc
     
      MOV   AX,@data
      MOV   DS,AX
     
      CALL  imprnb
     
      MOV AH,04CH
      INT 21H
     
    main endp
     
    imprnb proc
      MOV   BX,offset affnb    ; Je lui passe une chaine de 3 caracteres
      ADD   BX,2               ; J'ai 3 chiffre mais j'avance de 2 pour pas ecraser le caractere de fin de chaine '$'
      MOV   AX,nb              ; Je recupere le nb dans AX
      MOV   CX,3               ; CX sert de compteur pour la boucle
      @@chiffreSuivant:
        PUSH  CX
        MUL   un               ; Je multiplie AX par 1 pour eviter les divisions pas 0
        DIV   dix              ; Je divise AX par 10 pour recuper le chiffre dans DL
        ADD   DL,48            ; J'additionne 48 au chiffre pour avoir le code ascii
        MOV   [BX],DL          ; Je deplace la reponse dans la chaine
        DEC   BX               ; Je me deplace dans la chaine
        POP   CX
      LOOP @@chiffreSuivant
     ; J'affiche a l'ecran la chaine qui contient le score
      MOV   AH,09h
      MOV   DX,offset affnb
      INT   21h
      RET
    imprnb endp
     
    end main

  7. #7
    Futur Membre du Club
    Inscrit en
    Janvier 2003
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Janvier 2003
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Merci pour ton code tout est clair a présent...


    [ Isis ]

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2003
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Juin 2003
    Messages : 24
    Points : 10
    Points
    10
    Par défaut
    Ok de rien

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. conversion nombre en texte avec Format
    Par LaPanic dans le forum VBScript
    Réponses: 2
    Dernier message: 28/04/2010, 01h16
  2. Conversion Nombre en Texte
    Par le_dilem dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 27/06/2009, 14h18
  3. Conversion groupée de texte en nombre
    Par scrouet dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 08/10/2008, 16h32
  4. Réponses: 2
    Dernier message: 18/06/2008, 09h58
  5. Conversion nombre vers texte
    Par lebossejames dans le forum Assembleur
    Réponses: 1
    Dernier message: 23/02/2007, 16h08

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo