Td 2 microprocesseur 8086 + registres + adressages - informa

Informatique Industrielle : TD 2 Microprocesseur 8086 + Registres + Adressages

Télécharger PDF

Exercices sur les Instructions Assembleur avec le Microprocesseur 8086

Exercice 1 : Rôle des instructions et contenu des registres/mémoires

1. mov AL,2 : Charge la valeur décimale 2 dans le registre AL.

2. mov AL,[25] : Charge dans AL la valeur stockée à l'adresse mémoire 25h (hexadécimale).

3. mov [B4F],AX : Stocke la valeur du registre AX à l'adresse mémoire B4Fh.

4. mov AX,[B4F] : Charge dans AX la valeur stockée à l'adresse mémoire B4Fh.

5. mov AL,[DI] : Charge dans AL la valeur stockée à l'adresse mémoire pointée par le registre DI (adresse physique = DS:DI).

6. mov BP,05 : Charge la valeur décimale 5 dans le registre BP.

7. mov [BP],05 : Stocke la valeur décimale 5 à l'adresse mémoire pointée par BP (adresse physique = SS:BP).

8. mov AL,DS:[BX] : Charge dans AL la valeur stockée à l'adresse mémoire DS:BX.

9. mov AL,DS:[DI] : Charge dans AL la valeur stockée à l'adresse mémoire DS:DI.

10. mov DS:[DI],AL : Stocke la valeur du registre AL à l'adresse mémoire DS:DI.

11. mov AL,SS:[DI] : Charge dans AL la valeur stockée à l'adresse mémoire SS:DI.

Exercice 2 : Contenu des registres BL, BH et BX après l'instruction

Après l'exécution de mov BX,D74EH :

- BL = 4Eh

- BH = D7h

- BX = D74Eh

Exercice 3 : Contenu de la destination

1. Avec mov [SI],AX et SI=2000h, AX=B5C7h :

La mémoire à l'adresse 2000h contient B5C7h.

2. Avec mov BX,[DI] et DI=4044h, choisir un contenu mémoire (exemple : 1234h) :

BX = 1234h (valeur stockée à l'adresse 4044h).

Exercice 4 : Tracé du programme et affichage de la RAM

1. Tracé du programme :

Initialisation :

- BX = 4000h

- AX = 2233h

Exécution :

- Mémoire à 4000h : 2233h

- Mémoire à 4002h : 4455h

- Mémoire à 4004h : 66h

- Mémoire à 4005h : 77h

Exercice 5 : Adresses physiques et contenus mémoire

1. Calcul des adresses physiques et contenus mémoire (avec DS=0B9Ch, SS=0C40h, CS=0B99h) :

a. mov [SI],AL : Adresse physique = DS:SI = 0B9C0h + 0021h = 0B9E1h (contenu : valeur de AL).

b. mov [SI+1],AH : Adresse physique = DS:SI + 1 = 0B9E2h (contenu : valeur de AH).

c. mov [SI],AX : Adresse physique = DS:SI = 0B9E1h (contenu : AX = 56EFh).

d. mov [SI],AX : Adresse physique = DS:SI = 0B9E1h (contenu : AX = 56EFh).

e. mov [DI+100],CS : Adresse physique = DS:DI + 100h = 0B9C0h + 2042h + 100h = 0B9C0h + 2142h = 0DAC2h (contenu : CS = 0B99h).

f. mov [BX],DX : Adresse physique = DS:BX = 0B9C0h + 100Ch = 0B9C0h + 100Ch = 0C9CCh (contenu : DX = 002Eh).

g. mov [BP+150h],AX : Adresse physique = SS:BP + 150h = 0C400h + 5400h + 150h = 0C400h + 5550h = 0D950h (contenu : AX = 56EFh).

h. mov [BP][DI+75h],BX : Adresse physique = SS:BP + (DS:DI + 75h) = 0C400h + 5400h + (0B9C0h + 2042h + 75h) = 0C400h + 5400h + 0D9B7h = 0C400h + 0D9B7h (contenu : BX = 100Ch).

Exercice 6 : Tracé du programme avec gestion de la pile

Tracé du programme avec SP initial quelconque (exemple : SP = 2000h) :

- push ax : SP = 1FFEh, mémoire à 1FFEh = 2233h

- push ax : SP = 1FFCh, mémoire à 1FFCh = 4455h

- push ax : SP = 1FFAh, mémoire à 1FFAh = 6677h

- mov bp,sp : BP = 1FFAh

- mov al,[bp+3] : AL = 77h (adresse BP + 3 = 1FFEh)

- mov bx,[bp+1] : BX = 4455h (adresse BP + 1 = 1FFCh)

Exercice 7 : Locations OFFSET des données dans le segment

1. d1 DB 55H : OFFSET = 0

2. d2 DW 2560H : OFFSET = 1

3. m1 DW 02 : OFFSET = 3

4. m2 DB "Tel : 25607080" : OFFSET = 5 (chaîne de 12 octets)

5. r1 DD 0A23B4D7FH, 12CDH : OFFSET = 17 (32 bits pour 0A23B4D7FH), OFFSET = 1B (16 bits pour 12CDH)

6. r2 DQ 23B4D7F012345576H, 01102007H : OFFSET = 1D (64 bits pour 23B4D7F012345576H), OFFSET = 21 (64 bits pour 01102007H)

7. r3 DT 45698732165478965321H : OFFSET = 25 (10 octets pour la date)

8. Tab1 DB 6 DUP (253) : OFFSET = 2B (6 octets)

9. Tab2 DW 12 DUP (?) : OFFSET = 31 (24 octets)

Exercice 8 : Contenu du registre CL et mode d'adressage

1. Après mov cl,var[bx,si+1] avec BX=3, SI=2 :

CL = 32h (valeur de var[3,2+1] = var[3,3] = 32h).

2. Le mode d'adressage utilisé est adressage basé avec index et décalage.

Exercice 9 : Échange de deux cases mémoire en mots

1. Définition dans le segment de données :

DONNEE SEGMENT

A DW ?

B DW ?

DONNEE ENDS

2. Programme pour échanger A et B :

MOV AX, A

MOV BX, B

MOV A, BX

MOV B, AX

Exercice 10 : Valeurs de AX et CX après exécution

1. Après le programme MOV AX,0 / MOV CX,5 / LOOP Boucle :

AX = 5, CX = 0.

2. Après le programme MOV CX,5 / LOOP Debut :

CX = 0 (car LOOP décrémente CX jusqu'à 0).

Exercice 11 : Tracé du programme et valeurs des indicateurs CF et OF

1. Après mov al,64h / mov bl,2 / mul bl :

- AL = 64h * 2 = 94h (résultat de la multiplication)

- AH = 0 (car 64h * 2 ne dépasse pas 8 bits)

- CF = 0 (pas de débordement)

- OF = 0 (pas de débordement en 8 bits)

2. Après mov al,64h / mov cl,3 / mul cl :

- AL = 64h * 3 = 12Ch (résultat de la multiplication)

- AH = 0 (car 64h * 3 ne dépasse pas 8 bits)

- CF = 0 (pas de débordement)

- OF = 0 (pas de débordement en 8 bits)

FAQ

1. Qu'est-ce que l'adressage basé avec index et décalage ?

C'est un mode d'adressage où l'adresse est calculée comme la somme d'un registre de base (BX, BP, SI, DI), d'un registre d'index et d'un décalage (valeur immédiate). Exemple : var[bx,si+1].

2. Comment tracer un programme en assembleur ?

Pour tracer un programme, il faut suivre l'état des registres et de la mémoire à chaque instruction. Noter les valeurs avant et après chaque opération.

3. Que signifie SS:BP dans l'adressage mémoire ?

SS est le segment de pile, et BP est le registre pointant une adresse dans ce segment. SS:BP donne l'adresse physique en mémoire de pile.

Cela peut vous intéresser :

Partagez vos remarques, questions , propositions d'amélioration ou d'autres cours à ajouter dans notre site

Enregistrer un commentaire (0)
Plus récente Plus ancienne