Vous êtes sur la page 1sur 3

TRAVAUX PRATIQUES MICROPROCESSEUR

Mini Projet Exercice 01 : Comment les instructions de ce programme et indiqu pour chaque instruction le
mode dadressage.
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 raliser les oprations de transfert
suivantes. 1. Transfert du contenu de la case mmoires 1000h 1009h dans le segment DS 500h. 2. Transfert du contenu de la case mmoire 1000h dans le segment 500h la position 1009h dans le segment 600h. 3. Transfert du contenu de lespace mmoires 1000h 1009h dans lespace mmoires 2000h 2009h par rapport au segment DS 500h.

4. Transfert du contenu de lespace mmoires 1000h 1009h par rapport au segment DS 500h dans lespace mmoires 2000h 2009h par rapport au segment DS 600h. 5. Transfert du contenu de lespace mmoires 1000h 1009h par rapport au segment DS 500h dans lespace mmoires 2000h 2009h par rapport au segment SS 600h.

Exercice 03 :
Nous allons maintenant nous intresser au segment de donnes (dclaration des variables). 1. Crez dix variables de type octet, nommes b0 b9 et contenant les valeurs dcimales 1, 255, -1, e, les valeurs hexadcimale 32, ff et les valeurs binaires 1, 11111111. 2. Crez les mmes variables de type mot que vous nommerez d0, d1, 3. Crez ensuite un tableau de 10 octets nomm tb qui contient lui aussi ces valeurs. Faites de mme avec un tableau de 10 mots (td). 4. Crez ensuite un tableau de 152 octets contenant la valeur dcimale 111 et un tableau de 150 mots contenant la valeur dcimale 43981. 5. Compilez et excutez votre programme en mode pas pas. En cliquant sur le nom des variables (fentre original source code) vrifiez les valeurs en mmoire. Que dire des valeurs signes ? Et des caractres ? Quel est la diffrence entre une variable de type mot et de type octet ? Quel est la diffrence entre un tableau et une suite de variables ? Avez-vous remarqu autre chose ? Quelle est la taille du segment de donnes ?

Exercice 4 : saisir le programme suivant et faite son excution 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 rsultats des diffrents registres obtenus par lexcution de ce programme refaite le mme programme avec les deux instructions LDS, LES. Comment rsultats 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 rsultat dans une case mmoire.

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 lments de ce tableau et mettre le rsultat 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 indiques. Comments les rsultats obtenue. 3) Refaire la mm table avec les instructions IDIV et IMUL, comments les rsultas obtenus

Nbre1 Nbre2 12h 80h 80h 45h 14h 45h Feh Feh

Division (ax)

Multiplication (ax)

Exercice 8 :

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 rsultat. 2. Mme exercice mais en utilisant l'instruction LOOP.