Module microprocesseurs et microcontrôleurs TP N°1 Introduction : Deux objectif
Module microprocesseurs et microcontrôleurs TP N°1 Introduction : Deux objectifs sont assignés à ce TP : 1-Initiation au langage assembleur –plutôt langage d’assemblage – relatif au microprocesseur INTEL 8086 à travers des exemples simples. 2-Prise en main de EMU8086 émulateur logiciel qui simule le processeur 8086. EMU8086 présente un environnement de travail avec un éditeur de texte, un débogueur, en plus du suivi de la mémoire, des registres, des drapeaux. La prise en main de cet outil se fera durant le TP. Éléments d’un programme Un programme est composé d’un ensemble d’instructions exécutées par le processeur et des directives qui sont des commandes spéciales du programme d’assemblage. Durant la séance de T.P nous introduisons quelques directives indispensables. Structure d’un programme assembleur 8086 .model small .Stack < taille de la pile> .data ; Initialisation des données utilisées par le programme. ; Déclaration des variables. .code ; Instructions End Exercice N°1 : Le but de l’exercice est de comprendre la notion de codage des instructions à travers quelques exemples. 1- 1 Exécuter le bout du programme suivant pas à pas Page 1/4 Exercice N°1 :le codage d’instructions org 100h mov al,23h ; Charger le registre AL par la valeur immédiate(23h) mov ah,45 ; Charger le registre AH par la valeur immédiate(2Dh) mov ax,6789h; Charger le registre AX par la valeur immédiate(26505) mov al,0ABh ; Charger le registre AL par la valeur immédiate(ABh) mov ah,0CDH ; Charger le registre AH par la valeur immédiate(CDh) mov ax,0E10AH; ; Charger le registre AX par la valeur immédiate(E10Ah) mov [140h],al; Transférer le contenu de AL la case mémoire d’offset(adresse) 140h inc [140h] ; incrémenter le contenu de [140h] mov al,[140h]; Transférer le contenu de la case mémoire d’offset(adresse) 140h vers AL mov [160h],ax; Transférer le contenu de Ax la case mémoire d’offset(adresse) 160h mov ax,[160h]; Transférer. les contenus des cases mémoires d’offset(adresses) ;160h et 161h vers AX hlt ; arrêter l’exécution du programme. ret 1- 2. Relever le code de chaque instruction. 1- 3. Relever la taille en octets de chaque instruction. 1- 4. Visualiser la zone mémoire de votre code. 1- 5. Exécuter une deuxième fois le programme en visualisant les cases mémoires concernées par votre programme. 1- 6. Relever l’adresse de chaque instruction 1- 7. Exécuter une autre fois le programme et relever le contenu du registre IP. Quel est son rôle. 1- 8. Afficher le contenu du fichier listing générer par emu8086.Que contient-il ? 1- 9. Exécuter une troisième fois le programme en modifiant les données à votre convenance. 1- 10. Si au lieu d’utiliser le registre AX alors choisir un autre registre et refaire le programme. 1- 11. Transcrire à la main l’image (en binaire) de la zone mémoire contenant le code du programme. Donner votre conclusion. Exercice N°2 : Modes d’adressage La manière dont un opérande source est indiqué dans une instruction est appelé mode d’adressage. Il existe 8 modes d'adressage différents dans la programmation du 8086 mais nous les traitons pas tous ici. Page 2/4 Copier et coller le programme de l’Exercice N°2-1 dans emu8086. Cliquer sur :emulate →view →memory et inscrire dans les cases mémoires 160h 164h respectivement les valeurs 77h et 88h . Exécuter le programme pas à pas et modifier les commentaires du programme. Exercice N°2-1 Exercice N°2-1 : Exemples d’adressage org 100h mov si,160h ;insérer un commentaire ici mov di,160h ;insérer un commentaire ici mov dl,99H ;insérer un commentaire ici mov [140h],dl ;insérer un commentaire ici mov bh,45h ; Charger le registre BH par la valeur immédiate(45h) mov al,23h ; Comment est chargé AL mov al,bh; Comment est chargé AL mov al,[140h]; Comment est chargé AL mov al,[si]; Comment est chargé AL mov al,[di+4h]; Comment est chargé AL hlt ; arrêter l’exécution du programme. ret Dans chacune des instructions mov al,….. Ou se trouve l’adresse offset de la source ? Exercice N°2-2 : le mode d'adressage indirect Le mode d'adressage indirect : Ce mode d'adressage permet d'adresser les données à n'importe quel emplacement mémoire via une adresse offset conservée dans l'un des registres suivants: BP, BX, DI et SI. Copier et coller le programme de l’Exercice N°2-2 dans emu8086. Cliquer sur :emulate →view →memory et remplir les cases mémoires allant de 160h à 16Fh respectivement les valeurs de votre choix et exécuter le programme . Remarque : Pour chercher de l’aide sur une instruction cliquer sur : touche F1 → 8086 Instruction Set Exercice N°2-2: Modes d’adressage indirect org 100h mov si,160h ;insérer un commentaire ici mov cx ,16 ; insérer un commentaire ici boucle: mov ah,[si] ; insérer un commentaire ici inc si ; insérer un commentaire ici loop boucle ; insérer un commentaire ici nop ; insérer un commentaire ici hlt ; arrêter l’exécution du programme. ret Page 3/4 -Documenter chacune des instructions. -Que réalise ce programme ? - À quoi peut servir ce mode d’adressage. -Exécuter une deuxième fois le programme en observant le flag FZ. -Quand est-ce FZ est positionné. - Quel est le rôle du registre CX dans ce programme. -Refaire le programme en remplaçant le registre SI par un des registres DI, BX ou BP -En se basant sur l’exemple de cet exercice ; écrire un programme qui transfère une table d’une zone mémoire vers une autre. Exercice N°3 : Soit une table de données d’une certaine taille qui occupe une zone mémoire. En s’inspirant des exercices précédents alors proposer une solution qui donne la somme de tous les éléments de cette table. Exercice N°4 : Soit une table de données d’une certaine taille qui occupe une zone mémoire. On désire créer une deuxième table à partir de la première où à chaque élément de la première table sera ajouté la valeur 5. Donner votre programme. Page 4/4 uploads/Litterature/ microprocesseur-tpndeg1.pdf
Documents similaires










-
27
-
0
-
0
Licence et utilisation
Gratuit pour un usage personnel Attribution requise- Détails
- Publié le Apv 08, 2021
- Catégorie Literature / Litté...
- Langue French
- Taille du fichier 0.0716MB