Précédent   Forum du club des développeurs et IT Pro > Autres langages > Assembleur > x86 32-bits / 64-bits
x86 32-bits / 64-bits Architectures x86 32/64 bits et leurs outils (assembleurs, debuggers, émulateurs...)
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse
 
Outils de la discussion
Publicité
'
Vieux 21/02/2013, 00h54   #1
maelarael
Invité de passage
 
Inscription : février 2013
Messages : 2
Détails du profil
Informations forums :
Inscription : février 2013
Messages : 2
Points : 0
Points : 0
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 :
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 ?
maelarael est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2013, 01h24   #2
Obsidian
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 4 639
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Chercheur d'emploi
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2007
Messages : 4 639
Points : 11 096
Points : 11 096
Hello,

À ta dernière ligne, tu fais un « SUB AL,0x20 », mais tu ne replaces pas ce nouveau caractère dans [c].
Obsidian est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2013, 03h25   #3
maelarael
Invité de passage
 
Inscription : février 2013
Messages : 2
Détails du profil
Informations forums :
Inscription : février 2013
Messages : 2
Points : 0
Points : 0
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.
maelarael est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 22/02/2013, 15h51   #4
Obsidian
Modérateur
 
Avatar de Obsidian
 
Homme
Chercheur d'emploi
Inscription : septembre 2007
Messages : 4 639
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 37
Localisation : France, Essonne (Île de France)

Informations professionnelles :
Activité : Chercheur d'emploi
Secteur : High Tech - Éditeur de logiciels

Informations forums :
Inscription : septembre 2007
Messages : 4 639
Points : 11 096
Points : 11 096
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.
Obsidian est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Cette discussion est résolue.
Outils de la discussion

Navigation rapide


Fuseau horaire GMT +2. Il est actuellement 08h30.


 
 
 
 
Partenaires

Hébergement Web