Table des matières de cours langage assembleur
• Techniques de programmation et exemples
• Procédures et programmation structurée (1)
• La pile du 80×86
• Compléments sur les tableaux
• Procédures et programmation structurée (2)
– Passage de paramètres par valeur
– Passage de paramètres par adresse
– Variables globales / variables locales
• Récursivité
Techniques de prog. et exemples
Exemple 1
Afficher un nombre donné (dans EAX) en base 10
dans une autre base ECX (comprise entre 2 et 36)
EAX=45, ECX=4 Afficher : 2314
EAX=123, ECX=4 Afficher : 13234
EAX=32767, ECX=16 Afficher : 7FFFh
LASEx01.asm
Analyse
Pour convertir un nombre de la base 10 vers une autre base, on utilise l ’algorithme de la division entière pas la base. Les chiffres du nombre sont les restes successifs.
Logique
ACTION
Définition d ’un vecteur de chiffres(ici 36 symboles)
Définition d ’une zone d ’affichage (EAX<=32767 en base 2=32 chiffres)
EAX <- nombre
ECX <- base
REPETER
EDX <- EAXmodECX
EAX <- EAXdivECX
Stocker le chiffres dans la zone d ’affichage de la fin vers le début
JUSQU A CE QUEEAX=0
Afficher les chiffres mémorisés
FIN ACTION
Exemple 2
Trier un vecteur de bytes (des caractères) à l ’aide du tri bulle. Afficher la chaîne de caractères avant et après le tri.
La chaîne de caractères : a d c b
devient la chaîne : a b c d
Les étapes successives sont les suivantes :
a d c b-> a c d b -> a c b d -> a b c d
Principe
Il s’agit d’un tri par permutations ayant pour but d’amener à la “ surface ” du vecteur (élément d’indice minimum) la valeur la plus petite du vecteur (bulle), et ainsi de suite…
En partant de l’élément d’indice maximal, on parcourt le vecteur vers le premier élément en comparant chaque couple de valeurs qui se suivent ;
deux valeurs dans le désordre sont mises en ordre par permutation.
Lorsqu’on arrive à l’élément d’indice 1, lors de la fin du premier parcours, il contient la valeur minimale du vecteur d’origine. On recommence ensuite le parcours en partant de la même origine que lors du premier parcours mais cette fois, on s’arrêtera au deuxième élément du vecteur; et ainsi de suite… jusqu’à ce qu’il n ’y ait plus de permutations.
Exemple 2 (suite)
Remarques quant-à l ’affichage
Le vecteur se termine par les bytes 10,13 et $
On définira la longueur de la chaîne comme suit :
.data
tabl DB ‘ Chaîne a trier ’,10,13, ’$ ’
longueur DB $-tabl
Mon adresse ($) moins celle de tabl.
LASEx02.asm
Logique
ACTION
Afficher la chaîne de caractères permutation boleen
CX <- position de l ’avant dernier élément à trier.
REPETER
permutation <- faux
POURi <- 0 ACX FAIRE
SI tabl[i]>tabl[i+1] ALORS
inverser (tabl[i],tabl[i+1])
permutation <- vrai
FIN SI
FIN POUR
CX <- CX-1
JUSQU A CE QUENON permutation
Afficher la chaîne de caractères
FIN ACTION
Remarque
La variable de type boleen permutation sera représentée par BL (0=fx,
1=vrai)
Cours langage assembleur procédures et programmation structurée (4058 KO) (Cours PDF)