Vous êtes sur la page 1sur 8

EMSI-RABAT

Correction de la Série d’exercices


« Microprocesseurs »
Exercice 1:
Que font ces deux programmes
ORG 100H
ORG 100h ORG 100H MOV AX, 5
MOV DX, 0 MOV AX, 5 MOV BX, 2
MOV CX, 5 MOV CX, 5 JMP CALC
ETIQ: MOV BX, CX DEBUT: INC AX BACK: JMP STOP
ADD DL, [BX+1100] LOOP DEBUT CALC: ADD AX, BX
LOOP ETIQ MOV BX, AX JMP BACK
RET RET
STOP : RET

Ce premier programme ajoute le contenu des cellules mémoire des adresses 1101, 1102, 1103,
1104 et 1105 à DL qui est en départ 0. Comme le montre la figure ci-dessus, on a introduit dans
les cellules des valeurs au hasard et obtenu dans le registre DL la valeur hexadécimale E.

Ce deuxième programme incrémente 5 fois le registre AX. Alors le contenu de ce registre après
l'exécution du programme est A en hexadécimal.

Pr. EL YOUSSFI 2022-2023


EMSI-RABAT

Ce troisième programme, dans ses premières instructions, met 5 dans AX, 2 dans BX. Ensuite,
il saute à l'étiquette CALC pour ajouter le contenu de BX à AX. Puis, il passe à l'étiquette
BACK, qui à son tour passe à l'étiquette STOP où se trouve l'instruction RET.
Exercice 2 :
Écrire un programme en assembleur 8086 qui permet de calculer le factoriel de 5. Le résultat
doit être rangé dans @ D000h.

Exercice 3:
Écrire des programmes en assembleur 8086 qui permettent :
1. D'avoir toujours AH supérieur ou égal à AL.

Pr. EL YOUSSFI 2022-2023


EMSI-RABAT

2. De transférer les 11 données de l'@[DS:B000H] vers l'@ [DS:E001h].

Pr. EL YOUSSFI 2022-2023


EMSI-RABAT

3. De faire en sorte que AH contient toujours le maximum des valeurs d'adresse mémoire
entre 200h et 211h.

4. Compter les nombres nuls dans un tableau d'octets dans une mémoire de longueur 20 et
commençant à l'adresse [200h], le résultat sera placé à l'offset [400h].

Pr. EL YOUSSFI 2022-2023


EMSI-RABAT

Exercice 4:
En utilisant l'instruction TEST, compter les nombres pairs dans un tableau d'octets de 12h
d'adresses en commençant par @ 300h. Placez le résultat dans @ D000H.

Exercice 5 :
Écrire un programme en langage assembleur 8086 qui calcule le nombre de "1" dans AX.
Mettez le résultat dans le registre BL.

Pr. EL YOUSSFI 2022-2023


EMSI-RABAT

Écrire un programme pour trier un tableau de longueur N = 100h commençant à l'adresse


[200h] dans l'ordre croissant.

Exercice 6 :
Pour chacune de ces 4 questions, n'utilisez qu'une seule des fonctions AND, OR, XOR et
TEST pour effectuer l'une des tâches suivantes (chaque instruction doit être utilisée une fois).
1. Convertir le code ASCII d'un chiffre décimal (0-9) contenu dans AL en sa
valeur numérique.

2. Mettre les bits impairs de AX à "1" sans modifier les bits pairs.

Pr. EL YOUSSFI 2022-2023


EMSI-RABAT

3. Écrire un programme qui indique si les deux bits : le MSB et le LSB de BH sont tous
deux à 1 sans changer la valeur de BH.

4. Inverser le LSB de BX sans changer les autres bits.

Exercices supplémentaires :
Écrire un programme qui calcule le nombre de "0" dans la case mémoire pointée par DS :300h.
Mettez le résultat à l’offset 305h.

On dispose d’une table de 20 données localisées à partir de l’adresse 0100h. Proposer un


programme permettant d'effectuer le comptage du nombre de données paires et impaires d’une
table de 20 données. Le programme devra permettre de stocker ces résultats respectivement aux
adresses effectives @0050 et @0051.
Pr. EL YOUSSFI 2022-2023
EMSI-RABAT

On dispose d'une table de 15 données de 8 bits choisies arbitrairement à partir de l’adresse


0100h. Proposer un programme de recherche de la donnée maximale de la liste et mettre le
résultat dans $0050. Les nombres considérés étant signés.

Remarque :
Il peut y avoir plusieurs façons d'écrire des programmes pour répondre à ces exercices.

Pr. EL YOUSSFI 2022-2023

Vous aimerez peut-être aussi