Obligement - L'Amiga au maximum

Samedi 27 avril 2024 - 03:34  

Translate

En De Nl Nl
Es Pt It Nl


Rubriques

Actualité (récente)
Actualité (archive)
Comparatifs
Dossiers
Entrevues
Matériel (tests)
Matériel (bidouilles)
Points de vue
En pratique
Programmation
Reportages
Quizz
Tests de jeux
Tests de logiciels
Tests de compilations
Trucs et astuces
Articles divers

Articles in english


Réseaux sociaux

Suivez-nous sur X




Liste des jeux Amiga

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z,
ALL


Trucs et astuces

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Glossaire

0, A, B, C, D, E, F,
G, H, I, J, K, L, M,
N, O, P, Q, R, S, T,
U, V, W, X, Y, Z


Galeries

Menu des galeries

BD d'Amiga Spécial
Caricatures Dudai
Caricatures Jet d'ail
Diagrammes de Jay Miner
Images insolites
Fin de jeux (de A à E)
Fin de Jeux (de F à O)
Fin de jeux (de P à Z)
Galerie de Mike Dafunk
Logos d'Obligement
Pubs pour matériels
Systèmes d'exploitation
Trombinoscope Alchimie 7
Vidéos


Téléchargement

Documents
Jeux
Logiciels
Magazines
Divers


Liens

Associations
Jeux
Logiciels
Matériel
Magazines et médias
Pages personnelles
Réparateurs
Revendeurs
Scène démo
Sites de téléchargement
Divers


Partenaires

Annuaire Amiga

Amedia Computer

Relec


A Propos

A propos d'Obligement

A Propos


Contact

David Brunet

Courriel

 


Programmation : Assembleur - Routine de tri
(Article écrit par Max et extrait d'Amiga News Tech - septembre 1990)


M. Sorant, de Vernouillet dans l'Eure-et-Loire, pose cette angoissante question : "je suis intéressé par une routine de tri faisant suite à l'article en assembleur sur la lecture du répertoire d'une disquette. Merci d'avance".

Mais comment donc, il suffit de demander. Il existe plusieurs algorithmes de tri, parmi lesquels on peut citer les plus connus : le Bubble-Sort, le Quick-Sort ou encore le Heap-Sort. Chacun présente des avantages et des inconvénients, qui ne seront pas discutés ici, on n'a pas que ça à faire. Dans notre cas, nous allons nous contenter du Bubble-Sort, car c'est de loin le plus simple à programmer (la preuve : la routine ne fait que 13 lignes !).

La marche à suivre est simple : tous les éléments du tableau à trier sont traités à l'intérieur de deux boucles. La première détermine le plus petit élément figurant entre un élément "N" et la fin du tableau, en le comparant successivement à tous ceux qui sont derrière lui. Si l'un des éléments comparés s'avère être plus petit que "N", on échange les deux et il devient le nouvel "N" jusqu'à la fin de la boucle. La seconde boucle fait en sorte que la première soit exécutée pour chaque élément du tableau. Ce tri n'est certes pas le plus optimisé, et malgré la vitesse du 68000, il faut plus de 20 secondes pour trier un tableau de 10 000 éléments. Cela dit, pour de petits tableaux (jusqu'à 1000 éléments), le temps nécessaire reste inférieur à la seconde.

Mais trêve de bavardages, voici la routine. Elle attend dans a0, l'adresse du tableau à trier et dans d0, le nombre d'éléments que contient le tableau.

assembleur

Telle quelle, la routine trie un tableau de "words" (16 bits) dans l'ordre croissant, en tenant compte du signe des éléments. Pour trier par ordre décroissant, il faut remplacer l'instruction de saut "ble" par "bge". Pour ne plus tenir compte du signe, il faut la remplacer par "bcs" pour l'ordre croissant ou par "bcc" pour l'ordre décroissant. L'adaptation à des tableaux de "bytes" (8 bits) et de "longs" (32 bits) est laissée à votre sagacité...

Travail à la chaîne

Pour trier des chaînes de caractères, il faut procéder autrement. Le Bubble-Sort sera également utilisé, mais ce ne seront pas les chaînes elles-mêmes qui seront triées, mais plutôt un tableau de pointeurs sur ces chaînes. En effet, trier directement un tableau de chaînes ASCII relèverait plus de la folie furieuse que de l'initiation à l'assembleur. Avec des pointeurs, tout devient plus facile.

La routine utilisée ne présente pas énormément de différences avec la première. Simplement, elle fait appel à une seconde routine chargée de comparer deux chaînes de caractères entre elles pour déterminer s'il faut ou non échanger les deux pointeurs. Le reste est identique. Le petit programme suivant trie le tableau. Puis affiche le résultat.

assembleur
assembleur
assembleur

Et voilà, ce n'est pas plus difficile que ça. L'adaptation à la routine de lecture de catalogue ne devrait pas poser de problème particulier - enfin, j'espère.


[Retour en haut] / [Retour aux articles]