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 :

ASM[x86 32-bits / 64-bits] difficulté à s'assurer du caractère lu au clavier


Sujet :

x86 32-bits / 64-bits Assembleur

  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Points : 8
    Points
    8
    Par défaut ASM[x86 32-bits / 64-bits] difficulté à s'assurer du caractère lu au clavier
    Bonsoir à tous,

    J'ai un petit souci: roll:. En fait j'aimerais savoir quel est le caractère que j'ai lu au clavier en comparant la valeur du caractère courant avec les codes ASCII correspondants aux caractères. Dans le cas de ce code je teste si c'est le caractère 'a' qui est lu au clavier.
    Vous trouverez ci-dessous le code que j'ai pu écrire

    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    .intel_syntax noprefix
    .data
    buffer:.space 30,'0'
    desc:.asciz "%d\n"
    nbcar:.int 0
    .global main
    main:
    	# Lecture de la chaine de caractère	
    	push	offset nbcar
    	call	lirechaine
    	add	esp,4
    	push	offset buffer
    	push	nbcar
     
    	# Traitement de la chaine de caractère
    	call	affichechaine
    	add	esp,8
    	push	0
    	call 	exit
     
    # fonction permettant de lire une chaine de caractère au clavier
    lirechaine:
    	push	ebp
    	mov	ebp,esp
    	mov	eax,3
    	mov	ebx,0
    	mov	ecx,offset buffer
    	mov	edx,30
    	int	0x80
    	mov	esi,[ebp+8]
    	dec	eax
    	mov	[esi],eax
    	pop	ebp
    	ret
     
    # fonction permettant de traiter caractère par caractère de la chaine lue
    affichechaine:
    	push	ebp
    	mov	ebp,esp
    	mov	esi,[ebp+8]
    	mov	edx,0
    tque:	cmp	edx,esi
    	je	ftque
    	mov	ecx,[ebp+12]	
    	add	ecx,edx
    	push	ecx
    	call	code_caractere
    	add	esp,4
    	inc	edx
    	jmp	tque
    ftque:	pop	ebp
    	ret
     
    affichecar:
    	push	ebp
    	mov	ebp,esp
    	pusha
    	mov	eax,4
    	mov	ebx,1
    	mov	ecx,[ebp+8]
    	mov	edx,1
    	int	0x80
    	popa
    	pop	ebp
    	ret
     
    print_int:
    	push	ebp
    	mov	ebp,esp
    	pusha
    	push	[ebp+8]
    	push	offset desc
    	call	printf
    	add	esp,8
    	popa
    	pop	ebp
    	ret
     
    code_caractere:
    	push	ebp
    	mov	ebp,esp
    	pusha
    	mov	eax,[ebp+8]
     
    	#Ici je veux me rassurer de la valeur entière du caractère en cour de traitement
    	push	eax
    	call	print_int
    	add	esp,4
    	cmp	eax,98
    	je 	fin
     
    	#Ici je veux me rassurer du caractère en cour de traitement	
    	push	eax
    	call	affichecar
    	add	esp,4
    	fin:	popa
    	pop	ebp
    	ret
    Je compte sur votre bonne compréhension

  2. #2
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Septembre 2012
    Messages
    7
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Cameroun

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Septembre 2012
    Messages : 7
    Points : 8
    Points
    8
    Par défaut Code corrigé
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
     
    .intel_syntax noprefix
    .data
    buffer:.space 30,'0'
    desc:.asciz "%d\n"
    nbcar:.int 0
    .global main
    main:
    	# Lecture de la chaine de caractère	
    	push	offset nbcar
    	call	lirechaine
    	add	esp,4
    	push	offset buffer
    	push	nbcar
     
    	# Traitement de la chaine de caractère
    	call	affichechaine
    	add	esp,8
    	push	0
    	call 	exit
     
    # fonction permettant de lire une chaine de caractère au clavier
    lirechaine:
    	push	ebp
    	mov	ebp,esp
    	mov	eax,3
    	mov	ebx,0
    	mov	ecx,offset buffer
    	mov	edx,30
    	int	0x80
    	mov	esi,[ebp+8]
    	dec	eax
    	mov	[esi],eax
    	pop	ebp
    	ret
     
    # fonction permettant de traiter caractère par caractère de la chaine lue
    affichechaine:
    	push	ebp
    	mov	ebp,esp
    	mov	esi,[ebp+8]
    	mov	edx,0
    tque:	cmp	edx,esi
    	je	ftque
    	mov	ecx,[ebp+12]	
    	add	ecx,edx
    	push	ecx
    	call	code_caractere
    	add	esp,4
    	inc	edx
    	jmp	tque
    ftque:	pop	ebp
    	ret
     
    affichecar:
    	push	ebp
    	mov	ebp,esp
    	pusha
    	mov	eax,4
    	mov	ebx,1
    	mov	ecx,[ebp+8]
    	mov	edx,1
    	int	0x80
    	popa
    	pop	ebp
    	ret
     
    print_int:
    	push	ebp
    	mov	ebp,esp
    	pusha
    	push	[ebp+8]
    	push	offset desc
    	call	printf
    	add	esp,8
    	popa
    	pop	ebp
    	ret
     
    code_caractere:
    	push	ebp
    	mov	ebp,esp
    	pusha
    	mov	al,[ebp+8]
     
    	cmp	al,98
    	je 	fin
     	fin:	popa
    	pop	ebp
    	ret

Discussions similaires

  1. Tutoriels x86 32 bits / 64 bits
    Par Alcatîz dans le forum x86 32-bits / 64-bits
    Réponses: 4
    Dernier message: 14/06/2011, 14h00
  2. Comment lire un char bit a bit ?
    Par damien99 dans le forum C++
    Réponses: 9
    Dernier message: 02/02/2006, 21h57
  3. Lire bit par bit
    Par The_Undertaker dans le forum C++
    Réponses: 8
    Dernier message: 01/07/2005, 11h43
  4. Conversion de handles 16 bits <--> 32 bits
    Par Alcatîz dans le forum Windows
    Réponses: 6
    Dernier message: 13/12/2003, 13h40
  5. Désassemblage à la main 16 bits / 32 bits
    Par le mage tophinus dans le forum Assembleur
    Réponses: 12
    Dernier message: 19/04/2003, 00h55

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