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

x86 16-bits Assembleur Discussion :

Inverser une chaîne de caractères stockée dans un tableau


Sujet :

x86 16-bits Assembleur

  1. #1
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut Inverser une chaîne de caractères stockée dans un tableau

    Mon problème est que j'essaye d'inverser une chaîne de caractères en utilisant un tableau : je saisis à partir du clavier puis, en appuyant sur f, la chaîne sera inversée. Malheureusement, mon code prend la dernière case du tableau et décrémente son code ascii de 1.
    qsdf il affiche dcb
    au lieu de dsq
    MERCI POUR VOTRE AIDE
    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
    pile SEGMENT STACK
        DB 256 DUP(?)
    pile ENDS
     
     
    donnees SEGMENT
     
    t DB 10 DUP(?)
    donnees ENDS
    code SEGMENT
     
    saisie PROC FAR
    ASSUME cs:code,ds:donnees,ss:pile
    MOV ax,donnees
    MOV ds,ax
    mov cx,0
    mov  bl,t
     
    repeter:
           MOV ah,01h
           INT 21h
           cmp al,'f'
           je afficher
     
           MOV [t], al
           inc cx
           add t,1
           jmp repeter
     
    afficher:
    sub t,1
    mov dl,[t]
    mov ah,02h
    int 21h
     
    loop afficher
     
     
     
     
              MOV ah,4ch
              INT 21h
              saisie ENDP
              code ENDS
              END saisie

  2. #2
    Responsable Pascal, Lazarus et Assembleur


    Avatar de Alcatîz
    Homme Profil pro
    Ressources humaines
    Inscrit en
    Mars 2003
    Messages
    7 930
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ressources humaines
    Secteur : Service public

    Informations forums :
    Inscription : Mars 2003
    Messages : 7 930
    Points : 59 398
    Points
    59 398
    Billets dans le blog
    2
    Par défaut
    Bonjour !

    Attention qu'en faisant
    et
    tu ajoutes et soustrais simplement 1 au premier octet du tableau.

    Si tu veux parcourir ton tableau, tu dois passer par un adressage indirect.
    Je te conseillerais donc d'utiliser un registre de base (bx) ou d'index (si ou di) comme compteur dans ta boucle de lecture au clavier, pour pouvoir l'utiliser dans la boucle d'affichage. Cette dernière pourrait donner quelque chose comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    afficher:
    mov dl,t[bx]
    mov ah,02h
    int 21h
    dec bx
    cmp bx,0
    jl  afficher
    (il y a moyen d'améliorer la boucle pour ne pas avoir à recharger le registre ah à chaque itération).

    P.S. Après avoir affiché la chaîne, ton programme continue à attendre des touches du clavier : ta boucle de lecture ne s'achève pas lorsque l'utilisateur presse f.
    Règles du forum
    Cours et tutoriels Pascal, Delphi, Lazarus et Assembleur
    Avant de poser une question, consultez les FAQ Pascal, Delphi, Lazarus et Assembleur
    Mes tutoriels et sources Pascal

    Le problème en ce bas monde est que les imbéciles sont sûrs d'eux et fiers comme des coqs de basse cour, alors que les gens intelligents sont emplis de doute. [Bertrand Russell]
    La tolérance atteindra un tel niveau que les personnes intelligentes seront interdites de toute réflexion afin de ne pas offenser les imbéciles. [Fiodor Mikhaïlovitch Dostoïevski]

  3. #3
    Futur Membre du Club
    Inscrit en
    Octobre 2007
    Messages
    7
    Détails du profil
    Informations forums :
    Inscription : Octobre 2007
    Messages : 7
    Points : 7
    Points
    7
    Par défaut saisir des entier signée
    salut alcaiz merci de me rependre , j ai teste et ca marche.
    je voulais savoir si mon tableau etait un tableau d entier main signé lorseque j ecrit -1 le programme va considerer que se son deux saisie (le signe - et le 1) tandisque je veux saisir une seule donnee s est (-1).
    autrement comment saisir un entier negatif avec une seul touche du clavier .

  4. #4
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 941
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 941
    Points : 5 652
    Points
    5 652
    Par défaut
    Kui,
    Citation Envoyé par beraaa Voir le message
    salut alcaiz merci de me rependre , j ai teste et ca marche.
    je voulais savoir si mon tableau etait un tableau d entier main signé lorseque j ecrit -1 le programme va considerer que se son deux saisie (le signe - et le 1) tandisque je veux saisir une seule donnee s est (-1).
    autrement comment saisir un entier negatif avec une seul touche du clavier .
    A toi de gérer ça.

    Jusqu'à preuve du contraire, il n'y a pas de clavier disposant d'une touche envoyant directement -1 à un programme.
    Si les cons volaient, il ferait nuit à midi.

Discussions similaires

  1. [Débutant] Inverser une chaîne de caractères
    Par zbooon dans le forum x86 16-bits
    Réponses: 5
    Dernier message: 28/04/2017, 14h44
  2. Réponses: 4
    Dernier message: 02/03/2014, 15h08
  3. Inverser une chaîne de caractères
    Par Nyko17 dans le forum x86 16-bits
    Réponses: 1
    Dernier message: 10/05/2008, 20h45
  4. Convertir une chaîne de caractère (saisie dans un textbox) en décimal
    Par sab_etudianteBTS dans le forum VB 6 et antérieur
    Réponses: 2
    Dernier message: 23/09/2007, 22h17
  5. Inverser une chaîne de caractères
    Par DBBB dans le forum Assembleur
    Réponses: 2
    Dernier message: 30/03/2003, 12h09

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