Voici un guide étape par étape sur la façon d'écrire un programme en langage assembleur pour compter le nombre de voyelles dans une chaîne :
1. Configurer le segment de données :
- Déclarez la chaîne sous forme de tableau de caractères.
- Définir un emplacement mémoire pour stocker le nombre de voyelles.
2. Configurer le segment de code :
- Commencez par le point d'entrée du programme, généralement appelé « principal » ou « démarrer ».
3. Initialisez le nombre de voyelles :
- Réglez initialement le nombre de voyelles à zéro.
4. Boucle à travers la chaîne :
- Utilisez une boucle pour parcourir chaque caractère de la chaîne.
5. Vérifier les voyelles :
- À l'intérieur de la boucle, utilisez des instructions conditionnelles pour vérifier si le caractère actuel est une voyelle.
- Les voyelles courantes dans l'alphabet anglais sont « A », « E », « I », « O » et « U », ainsi que leurs équivalents minuscules.
6. Augmentez le nombre de voyelles :
- Si le caractère actuel est une voyelle, incrémentez le nombre de voyelles.
7. Terminer la boucle :
- Continuez la boucle jusqu'à ce que la fin de la chaîne soit atteinte.
8. Afficher le nombre de voyelles :
- Utilisez les appels système ou les fonctions de bibliothèque pour afficher le nombre de voyelles sur la console.
9. Quitter le programme :
- Utilisez un appel système pour quitter le programme avec succès.
Voici un exemple de ce à quoi pourrait ressembler le code assembleur :
```assemblage
.données
str :.asciiz "Bonjour tout le monde !"
nombre_voyelles :.int 0
.texte
.global principal
principal:
xor ebx, ebx; Initialiser vocal_count à 0
déplacer edi, str; Pointeur de chaîne
mov al, [edi]; Obtenez le premier personnage
boucle:
cmp al, '$'; Fin de chaîne ?
j'affiche; Oui, passez à l'affichage du nombre de voyelles
cmp al, 'A'; Vérifiez si le caractère actuel est « A »
je incrémente; Oui, passer à l'incrémentation du nombre de voyelles
cmp al, 'E'; Vérifiez si le caractère actuel est « E »
j'incrémente
cmp al, 'je'; Vérifiez si le personnage actuel est « I »
j'incrémente
cmp al, 'O'; Vérifiez si le caractère actuel est « O »
j'incrémente
cmp al, 'U'; Vérifiez si le caractère actuel est « U »
j'incrémente
cmp al, 'un'; Vérifiez si le caractère actuel est « a »
j'incrémente
cmp al, 'e'; Vérifiez si le caractère actuel est « e »
j'incrémente
cmp al, 'je'; Vérifiez si le caractère actuel est « i »
j'incrémente
cmp al, 'o'; Vérifiez si le caractère actuel est « o »
j'incrémente
cmp al, 'u'; Vérifiez si le caractère actuel est « u »
j'incrémente
incrément:
avec ebx; Augmenter le nombre de voyelles
avec edi; Passer au personnage suivant
boucle jmp; Passer à nouveau à la boucle
afficher:
déplacement eax, 4 ; Appel système pour écrire
déplacement ebx, 1 ; Descripteur de fichier (stdout)
déplacer ecx, str; Message à écrire
déplacement edx, 13 ; Longueur du message + caractère de nouvelle ligne
appel système ; Passer un appel système
déplacement eax, 1 ; Appel système pour quitter
déplacement ebx, 0; Statut de sortie (succès)
appel système ; Passer un appel système
```
Ce code suppose un environnement Linux et utilise les conventions d'appel System V. Il initialise le nombre de voyelles à zéro, parcourt la chaîne, vérifie chaque caractère pour les voyelles et incrémente le nombre en conséquence. Enfin, il affiche le nombre de voyelles et quitte le programme avec succès.
|