Laboratoire 7 - Routines

Sommaire

ASCII vers entier

Écrire la routine atoi (dans un programme atoi.s) qui prend un paramètre une chaine de caractère représentant un entier décimal et retourne l’entier correspondant. Note: la conversion s’arrete quand un non chiffre est rencontré.

Exemples:

.data
test1:	.string "123" # atoi doit donner 123
test2:	.string "toto" # atoi doit donner 0
test3:	.string "42toto"  # atoi doit donner 42

Somme des arguments

Écrire un programme soma.s qui fait la somme de tous les arguments de la ligne de commande en utilisant atoi pour les convertir en entier.

Comparaison de chaînes

Écrire un programme strcmp.s qui lit deux chaines de caractères et affiche la plus grande des deux dans l’ordre lexicographique.

Pour ce faire, implémentez un routine strcmp qui prend deux pointeurs vers des chaines de caractères (dans a0 et a1) et retourne dans a0 le résultat de leur comparaison lexicographique:

  • -1 si a0 est inférieur à a1
  • 0 si a0 est égal à a1
  • 1 si a0 est supérieur à a1

Tri de chaînes

Écrire un programme sort.s qui lit un maximum de 20 lignes de 80 caractères et les affiche triés dans l’ordre lexicographique. On s’arrête également de lire quand une ligne vide est rencontrée.

Notes:

  • Inspirez-vous du tri à bulles tri.s vu au cours 06 mais appelez strcmp pour la comparaison.
  • Inspirez-vous du programme tac.s du laboratoire précédent pour la lecture des 20 lignes.