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 32-bits / 64-bits Assembleur Discussion :

Transformation des minuscules en majuscules


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Transformation des minuscules en majuscules
    Bonsoir messieurs, mesdames, mesdemoiselles,

    Je débute totalement en assembleur, mais j'essaie de me démerder tant bien que mal. On m'a donné un exercice assez court à faire, pour lequel je sais à peu près comment faire une solution, mais je n'en tire rien.

    Je suis sous Ubuntu 12.04 et j'utilise NASM, avec PC HP.

    Mon exercice est (en résumé) : « Programmez une commande cat qui transforme les minuscules en majuscules ».

    J'ai déjà un code de cat en exemple. Je l'ai donc repris et y ai ajouté mes propres lignes. Voici ce à quoi je suis arrivé :

    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
    global main
    ;===========================
            section .bss
    ;===========================
    c       RESB    1               ; le caractère lu
    ;===========================
            section .text
    ;===========================
    main:
    .boucle:
            MOV     EAX,3           ; lecture
            MOV     EBX,0           ; au clavier
            MOV     ECX,c
            MOV     EDX,1
            INT     0x80
            CMP     EAX,0
            JE      .fin            ; il n'y a plus rien à lire
            CALL    majuscule
            MOV     EAX,4           ; écriture
            MOV     EBX,1           ; à l'écran
            MOV     ECX,c
            MOV     EDX,1
            INT     0x80
            JMP     .boucle
    .fin:   MOV     EAX,1
            MOV     EBX,0
            INT     0x80
            RET
    ; ==========================
    majuscule:       ; <= mon code à partir d'ici
    .comparaison:
            MOV     AL,[c]
            CMP     AL,'a'  ;vérifie que c a un code ASCII supérieur à celui de a
            JB      .fin
            CMP     AL,'z'  ;vérifie que c a un code ASCII inférieur à celui de z 
            JA      .fin
            SUB     AL,0x20 ;transforme la lettre de c en majuscule
            JMP     .fin
    .fin:
            RET
    Et quand je lance une démo', il n'y a rien qui change :/. y a-t-il un truc que je n'aurais pas compris ?

  2. #2
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Hello,

    À ta dernière ligne, tu fais un « SUB AL,0x20 », mais tu ne replaces pas ce nouveau caractère dans [c].

  3. #3
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Février 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2013
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Citation Envoyé par Obsidian Voir le message
    Hello,

    À ta dernière ligne, tu fais un « SUB AL,0x20 », mais tu ne replaces pas ce nouveau caractère dans [c].
    o.o j'me sens ridicule. Le pire c'est que l'idée m'a traversé l'esprit mais je n'ai pas fouillé, persuadé que ce n'était pas ça. Merci beaucoup.

  4. #4
    Modérateur
    Avatar de Obsidian
    Homme Profil pro
    Développeur en systèmes embarqués
    Inscrit en
    Septembre 2007
    Messages
    7 360
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Développeur en systèmes embarqués
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2007
    Messages : 7 360
    Points : 23 600
    Points
    23 600
    Par défaut
    Citation Envoyé par maelarael Voir le message
    o.o j'me sens ridicule. Le pire c'est que l'idée m'a traversé l'esprit mais je n'ai pas fouillé, persuadé que ce n'était pas ça. Merci beaucoup.
    Ne t'inquiète pas. C'est le lot de tous les programmeurs, même les plus avertis.

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

Discussions similaires

  1. [JAXB] Une variable en majuscule transformée en minuscule dans le fichier xml
    Par thib_84 dans le forum Persistance des données
    Réponses: 3
    Dernier message: 31/01/2014, 12h57
  2. Transformer des minuscules en majuscules
    Par qqoos dans le forum Cobol
    Réponses: 2
    Dernier message: 05/09/2008, 11h21
  3. Transformer du minuscule en MAJUSCULE
    Par moilou2 dans le forum IHM
    Réponses: 2
    Dernier message: 01/07/2008, 20h38
  4. [onKeydown] Probleme avec pour detecter les majuscules des minuscules
    Par magnus2005 dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 29/09/2006, 23h48
  5. [String] passer des minuscules aux majuscules
    Par Lady_jade dans le forum Langage
    Réponses: 5
    Dernier message: 19/10/2005, 11h03

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