Vous êtes sur la page 1sur 4

FILIERE : IIA IIA205 : COMMANDE DESMICROPROCESSEURS 1

CHAPITRE 8 : PROGRAMMATION EN ASSEMBLEUR

Objectifs spécifiques
A la fin de ce chapitre l’étudiant doit être capable de :
- Décrire la structure d’un programme en assembleur
- Ecrire un programme en assembleur

I. Introduction
Pour aboutir à un programme correct exécutable par le microprocesseur, il est nécessaire de suivre les étapes suivantes :
1. Traduire le cahier des charges en un organigramme qui décrit le fonctionnement du programme.
2. Ecrire les instructions du programme sur papier.
3. A l’aide d’un éditeur de texte, écrire le programme dans un fichier ayant l’extension« .asm».
4. Compiler et assembler le programme source à l’aide d’un compilateur. Le compilateur va détecter s’il y a des
erreurs dans votre programme. Si le programme est syntaxiquement correct, le compilateur génèrera un fichier
ayant le même nom que le fichier source mais avec l’extension « .obj».
5. Faire l’édition de lien du programme à l’aide d’un éditeur de lien. On obtient ainsi un programme
exécutable qui a l’extension « .exe».
6. Exécuter le programme.
7. Si les résultats sont erronés, alors faire le débogage du programme a l’aide d’un débogueur comme le pour
localiser l’erreur, puis faire la correction.
Donc en conclusion pour assembler un programme on doit passer par les phases suivantes :
- Saisie du code source avec un éditeur de texte.
- Compiler le programme avec un compilateur.
- Editer les liens pour avoir un programme exécutable.
Les trois phases sont schématisées par la figure suivante :

II. CONSTITUTION D’UN PROGRAMME SOURCE


Un programme assembleur est un ensemble de déclarations constitué de directives et d’instructions.
2.1. Les Instructions

Syntaxe :{Label :} Mnémonique {opérande} { ; commentaire}

Le champ Mnémonique est toujours obligatoire, les autres sont optionnels.

REDIGE PAR NKAMNDA SATEU CHRISTIAN NOEL ANNEE ACADEMIQUE 2021-2022 1


FILIERE : IIA IIA205 : COMMANDE DESMICROPROCESSEURS 2

Exemple :
ET1 : MOV AX , 500H ; mettre la valeur 500 dans le registre AX

2.2. Les Directives


Syntaxe :{Nom} Directive {opérande} { ; commentaire}

Seul le champ Directif est toujours obligatoire.

a. Les directives de données : (EQU ; DB ; DW ; DD)


i. EQU :
Syntaxe :Nom EQU Expression; assigne le nom de l’expression au nom
Exemples :
VAL EQU 50 ; assigne la valeur 50 au nom VAL
ET1 EQU VAL* 5 + 1 ; assigne une expression calculer a VAL

ii. DB (Define Byte):


Syntaxe : [nom] DB expression [; commentaire] DB réserve des mots a un octet

Exemples :
Vil DB 12H ; Définit une variable (un octet) de valeur Initiale 12.
Tab DB 18H, 15H, 13H ; définit un tableau de 3 cases
;(3 octet) Qui démarre à partir de l'adresse TAB.

iii. DW (Define Word) :


Syntaxe : [nom] DW expression [; commentaire]

DW réserve des mots a deux octets.

iv. DD (Define Double):


Syntaxe : [nom] DD expression [; commentaire]

DD réserve des mots à quatre octets.

b. Les directives de segment et de procédure (Assume ; segment ; proc/endp)


i. Segment : cette directive délimite un segment.
L'instruction SEGMENT sert à :
- contrôler le placement du code objet dans des segments spécifiques.
- Associer les symboles représentant des adresses à un segment en considérant leur valeur comme un déplacement par
rapport au début du segment.
- spécifier des directives pour l'editeur de lien (nom du segment, champs d'opérande de l'instruction SEGMENT
déterminant le traitement du segment par l'éditeur de liens); ces informations sont passées telles quelles.

ENDS marque la fin du segment.


Les opérandes de l'instruction SEGMENT déterminent la manière dont l'éditeur de liens traitera le segment :

REDIGE PAR NKAMNDA SATEU CHRISTIAN NOEL ANNEE ACADEMIQUE 2021-2022 2


FILIERE : IIA IIA205 : COMMANDE DESMICROPROCESSEURS 3

COMMON :
Tous les segments avec l'étiquette (classe) seront placés à la même adresse de base (dans un bloc contigu) ; des zones du
type (COMMON) avec différents noms (( classe)) seront placés l'un derrière l'autre.
PUBLIC :
Tous les segments avec ce qualificatif seront regroupés dans un seul segment résultant, l'un derrière l'autre.
STACK :
Un seul segment avec ce qualificatif est accepté, il est destiné à la gestion de la pile.
MEMORY :
Le premier segment portant ce qualificatif sera placé à une position de mémoire en dessus de tout autre segment; s'il y a
d'avantage de segments de ce genre, ils seront traités comme les segments du type ( COMMON ).
AT :
Les étiquettes définies dans un tel segment sont définies comme étant relatives à la valeur ((adr) ) 16) * 16.

Exemple :

ii. Assume : Cette directive indique à l’assembleur que tel segment appartient à tel registre.

Exemple :

iii. proc/Endp: Cette directive marque le début et la fin d’une procédure.


(Une procédure est un petit bout de code dans le programme, vers lequel on peut faireun saut)

iv. Macro/Endm: Cette directive marque le début et la fin d’une macro.

(une macro est un bout de code qui est copié dans le programme à chaque fois que l’on fait appel à lamacro)

c. Les directives de contrôle (ORG ; END)


i. ORG :
Syntaxe :
Cette directive met le compteur de location à l’adresse produite par l’expression. L’assembleur range le
code objet du programme à partir de cette adresse.
REDIGE PAR NKAMNDA SATEU CHRISTIAN NOEL ANNEE ACADEMIQUE 2021-2022 3
FILIERE : IIA IIA205 : COMMANDE DESMICROPROCESSEURS 4

Exemple :ORG 100h ; fait ranger le programme à 100h octets à partir du début de ; segment de code.

ii. END :
Syntaxe :END«Expression»
Cette directive marque la fin du programme source. «Expression» est généralement un label à partir
duqueldébutera l’exécution du programme.

2.3. L’architecture globale d’un programme assembleur

REDIGE PAR NKAMNDA SATEU CHRISTIAN NOEL ANNEE ACADEMIQUE 2021-2022 4

Vous aimerez peut-être aussi