Partage
  • Partager sur Facebook
  • Partager sur Twitter

|| ASM || afficher un entier saisi

    26 juin 2008 à 17:40:11

    Bonjour ben je n'y arrive pas :p
    Merci de votre aide.
    .386
    assume ss:pile, ds:donnees, cs:code
    
    pile segment stack use16
            db 1024 dup(0)
    pile ends
    
    donnees segment use16
    
            entrer_entier db "Entrez un entier$"
            bResultat db ?
            acligne db 10,13,"$"
    
    donnees ends
    
    code segment use16
    main :
    
            mov ax,donnees
            mov ds,ax
    
            
    
            ;affichage entrez un entier
    
            mov ax,0900h
            lea dx,entrer_entier
            int 21h
    
            ;saisi d'un entier
    
            mov ah,0ah
            lea dx,bresultat
            int 21h
    
    
            ;passage a la ligne
            
            mov ah,09h
            lea dx,acligne
            int 21h
            
            ;affichage msg
    
            mov ax,0900h
            lea dx,bResultat
            int 21h
    
            mov ah,4ch
            int 21h
    
    code ends
    end main


    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      26 juin 2008 à 18:40:59

      (apparemment, c'est pour DOS)

      Il me semble qu'il y a une erreur de syntaxe là:
      ;saisi d'un entier
      
              mov ah,0ah
              lea dx,bresultat
              int 21h
      

      En effet, c'est bResultat et non bresultat.
      Ensuite, pour éviter un débordement, je te conseille d'agrandir sa taille.

      Cependant, il est fort probable que j'aie loupé quelque chose d'autre ou que j'aie dis une bêtise; je n'y connais rien en programmation DOS. ;)
      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        18 juillet 2008 à 22:13:49

        ton code ne marchera pas, car la fonction 9h prendra ton entier pour une chaine ascii
        c'est donc ici que ton code ne fonctionne pas:
        mov ax,0900h
                lea dx,bResultat
                int 21h

        que dois-tu donc faire?
        tu peux coder une procédure qui prendra cet entier, le convertira en ascii (n'oublie pas de mettre le '$' à la fin de la chaîne), et ensuite afficher cette chaîne.

        une aide pour récupérer chacun des chiffres d'un entier (concrètement, passer de 124 à 1, 2 et 4):

        Citation : Wikipédia

        L'autre méthode pour convertir un nombre décimal en base 2 est d'utiliser des successions de divisions par le nombre 2. Ainsi, on a:

        45853 / 2 = 22926 reste 1
        22926 / 2 = 11463 reste 0
        11463 / 2 = 5731 reste 1
        5731 / 2 = 2865 reste 1
        2865 / 2 = 1432 reste 1
        1432 / 2 = 716 reste 0
        716 / 2 = 358 reste 0
        358 / 2 = 179 reste 0
        179 / 2 = 89 reste 1
        89 / 2 = 44 reste 1
        44 / 2 = 22 reste 0
        22 / 2 = 11 reste 0
        11 / 2 = 5 reste 1
        5 / 2 = 2 reste 1
        2 / 2 = 1 reste 0
        1 / 2 = 0 reste 1

        Soit (en lisant les restes obtenus en sens inverse): 1011001100011101


        Si tu veux afficher ton résultat en binaire, tu divises par deux. Mais je pense que tu veux l'afficher en décimal (0-9), donc tu divises par 10.
        Si tu as du mal je peux te donner ma procédure, mais, sauf si tu es débutant complet, ce serait bien que tu la code toi-même,ce pourrait être un très bon exercice et tu aurais un include pour tes futures programmes en asm.

        Bon codage ;)
        • Partager sur Facebook
        • Partager sur Twitter

        || ASM || afficher un entier saisi

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown