Mini Projet - e-Learn Université Ouargla

Download Report

Transcript Mini Projet - e-Learn Université Ouargla

TRAVAUX PRATIQUES MICROPROCESSEUR
Mini Projet
Exercice 01 : Commenté les instructions de ce programme et indiqué pour chaque instruction le
mode d’adressage.
Mov ax, 100h
Mov bx, ax
Mov cx, bx
Mov dl, ch
Mov dh, [100h]
Mov cx, [102h]
Mov bx, 103h
Mov bp, 103h
Mov dl, [bx]
Mov dl, [bp]
Mov dh, [bx]+4
Mov dh, [bp]+4
Mov si, 4
Mov dl, [bx][si]
Mov dl, [bp][si]
Mov ax, 100h
Mov ds, ax
Mov dh, [100h]
Mov cx, [102h]
Mov bx, 103h
Mov bp, 103h
Mov dl, [bx]
Mov dl, [bp]
Mov dh, [bx]+4
Mov dh, [bp]+4
Mov si, 4
Mov dl, [bx][si]
Mov dl, [bp][si]
Hlt.
Exercice 02 : Ecrire un programme en assembleur 8086 pour réaliser les opérations de transfert
suivantes.
1. Transfert du contenu de la case mémoires 1000h à 1009h dans le segment DS 500h.
2. Transfert du contenu de la case mémoire 1000h dans le segment 500h à la position 1009h
dans le segment 600h.
3. Transfert du contenu de l’espace mémoires 1000h à 1009h dans l’espace mémoires 2000h à
2009h par rapport au segment DS 500h.
4. Transfert du contenu de l’espace mémoires 1000h à 1009h par rapport au segment DS 500h
dans l’espace mémoires 2000h à 2009h par rapport au segment DS 600h.
5. Transfert du contenu de l’espace mémoires 1000h à 1009h par rapport au segment DS 500h
dans l’espace mémoires 2000h à 2009h par rapport au segment SS 600h.
Exercice 03 :
Nous allons maintenant nous intéresser au segment de données (déclaration des variables).
1. Créez dix variables de type octet, nommées b0 à b9 et contenant les valeurs décimales 1,
255, -1, ‘e’, les valeurs hexadécimale 32, ff et les valeurs binaires 1, 11111111.
2. Créez les mêmes variables de type mot que vous nommerez d0, d1,…
3. Créez ensuite un tableau de 10 octets nommé tb qui contient lui aussi ces valeurs. Faites de
même avec un tableau de 10 mots (td).
4. Créez ensuite un tableau de 152 octets contenant la valeur décimale 111 et un tableau de 150
mots contenant la valeur décimale 43981.
5. Compilez et exécutez votre programme en mode pas à pas. En cliquant sur le nom des
variables (fenêtre original source code) vérifiez les valeurs en mémoire.
Que dire des valeurs signées ?
Et des caractères ?
Quel est la différence entre une variable de type mot et de type octet ?
Quel est la différence entre un tableau et une suite de variables ?
Avez-vous remarqué autre chose ? Quelle est la taille du segment de données ?
Exercice 4 : saisir le programme suivant et faite son exécution en mode pas à pas
mov ax,00
mov ds, ax
mov es , ax
mov ax, 1111h
mov bx, 114h
mov [bx], ax
lea dx, [bx]
hlt
-
indiqué les résultats des différents registres obtenus par l’exécution de ce
programme
-
refaite le même programme avec les deux instructions LDS, LES. Commenté
résultats obtenus.
les
Exercice 5 :
Écrire un programme en assembleur qui calcule la somme des valeurs contenus dans les registres
ax, bx, cx et dx est stock le résultat dans une case mémoire.
Exercice 6:
Soit le tableau suivant:tab
db
5, 30, 20, 1,11, 8 écrire un programme en assembleur pour
faire la somme des 6 éléments de ce tableau et mettre le résultat dans une variable S.
Exercice 7 :
mov al, nbre1
mov bl, nbre2
add al, bl
mov al, nbre1
sub al, bl
mov al, nbre1
mov ah, 00
div bl
mov al, nbre1
mov ah, 00
mul bl
nbre1 equ 45h
nbre2 equ 0e0h
hlt
1) Ecrire le programme suivant
2) remplir le tableau pour les valeurs indiquées. Commentés les résultats obtenue.
3) Refaire la mémé table avec les instructions IDIV et IMUL, commentés les résultas obtenus
Nbre1 Nbre2
Exercice 8 :
12h
80h
80h
45h
Division (ax)
Multiplication (ax)
14h
45h
Feh
Feh
1. Ecrire un programme en assembleur qui calcule la somme des 11 premiers entiers (0
+ 1 + 2 +…+ 10 +11 ). On utilisera pour cela les instructions MOV, CMP, JNE,
ADD, DEC ou INC… On utilisera une variable R pour stocker le résultat.
2. Même exercice mais en utilisant l'instruction LOOP.