Vous êtes sur la page 1sur 7

UNIVERSITE M’HAMED BOUGARA DE BOUMERDES

FACULTE DE TECHNOLOGIES
Département : Ingénierie des Systèmes Electriques
Master Electronique des Systèmes Embarqués- S1 (2019/2020)

Module : Conception de Systèmes à Microprocesseurs


Série de TD N°3 : Instructions de Saut et de Branchement
sous le Microprocesseur 8086

Exercice N°1 :
Ecrire un programme qui permet de comparer entre AX et BX et effectuer les opérations suivantes :
Si AX > BX Alors AX AX+1
Sinon AX  AX-5
Solution 1 :
CMP AX,BX ;Comparer AX et BX
JNG L1 ;Jump if Not Great
INC AX ;AX  AX + 1
JMP L2
L1 SUB AX,05 ;AX  AX - 05
L2 NOP
Solution 2 :
CMP AX,BX ;Comparer AX et BX
JG L1 ;Jump if Great
SUB AX,05 ;AX  AX - 05
JMP L2
L1 INC AX ;AX  AX + 1
L2 NOP
Exercice N°2 :
Ecrire un programme qui correspond à l’algorithme suivant :
Si a >0 Alors a  a+B et b0
Sinon a  a-b et b 1
Solution 1 :
CMP AX,00 ;Comparer AX avec 00h
JNG L1 ;Jump if Not Great
ADD AX,BX ;AX  AX + BX
MOV BX,00 ;BX 00h
JMP L2
L1 SUB AX,BX ;AX  AX – BX
MOV BX,01 ;BX  01h
L2 NOP
Solution 2 :
CMP AX,00 ;Comparer AX avec 00h
JG L1 ;Jump if Great
SUB AX,BX ;AX  AX – BX
MOV BX,01 ;BX  01h
JMP L2
L1 ADD AX,BX ;AX  AX + BX
MOV BX,00 ;BX 00h
L2 NOP
Solution 3 :
CMP AX,00 ;Comparer AX avec 00h
JS L1 ;Jump if Sign
ADD AX,BX ;AX  AX + BX
MOV BX,00 ;BX 00h
JMP L2
L1 SUB AX,BX ;AX  AX – BX
MOV BX,01 ;BX  01h
L2 NOP
Exercice N°3 :
Traduire l’algorithme suivant en assembleur ( i sera remplacé par AX) :
Si i<0 alors i-i
Sinon : ji2
Solution 1:
CMP AX,00 ;Comparer AX avec 00h
JL L1 ;Jump if Less
MUL AX ;DX.AX  AX2
JMP L2
L1 NEG AX ;AX  - AX
L2 NOP
Solution 2:
CMP AX,00 ;Comparer AX avec 00h
JNL L1 ;Jump if Not Less
NEG AX ;AX  - AX
JMP L2
L1 MUL AX ;DX.AX  AX2
L2 NOP
Exercice N°4 :
Ecrire un programme assembleur corespondant à l’algorithme suivant :
a1
Pour i de 1 à 05 faire
aa*i
Fin pour
Solution:
MOV AX,01
MOV CL,01 ; variable i
etq CMP CL,05 ; i est-il supérieur à 05 ?
JG fin ; la boucle est terminée
MUL CL ;AX  AL * CL
INC CL
JMP etq
Fin NOP
Exercice N°5 :
Traduire l’algorithme suivant en assembleur (CX remplace i et BX remplace j ) :
j  5000
Pour i de 1 à 100 par pas de 3 faire
jj–i
fin pour
Solution :
MOV BX,1388 ;BX 1388h = (5000)10
MOV CX,0001 ;CX 01h
etq1 CMP CX,64 ;Comparer CX avec 64h = (100) 10
JG etq2
SUB BX,CX ;jj-1
ADD CX,03
JMP etq1
etq2 NOP
Exercice N°6 :
Ecrire le programme assembleur qui correspond à l’algorithme suivant :
i1
j  100
tant que j > i faire
ii+3
jj+2
Fin tant
Solution :

MOV AX,0001
MOV BX,0064 ;BX  64h = (100) 10
etq CMP BX,AX
JNG fin
ADD AX,0003
ADD BX,0002
JMP etq
fin NOP
Exercice N°7 :

Ecrire le programme assembleur de l’algorithme suivant :


j0
Répéter
i  j2
jj+1
jusqu’à ce que i > 20
Solution :
MOV CX,0000
etq MOV Al,CL
MUL Al ;AX  AL2
INC CL
CMP CL,14 ;Comparer CL avec 14H=(20) 10
JNG etq
Exercice N°8 :

Ecrire un programme assembleur qui exécute un groupe d’instructions parmi plusieurs en


fonction de la valeur d’une expression :
Selon que i=0 faire ji
Ou i=5 faire j - i
Ou i=10 faire ji+2
Solution :
CMP CX,0 ; i=0?
JNE etq1
MOV AX,CX ;AX  CX
JMP etq3
etq1 CMP CX,05 ;i=5 ?
JNE etq2
MOV AX,CX
NEG AX ;AX  - AX
JMP etq3
etq2 CMP CX,0A ;i=10 ?
JNE etq3
MOV AX,CX
ADD AX,02
etq3 NOP
Exercice N°9 :
Traduire l’algorithme suivant en assebleur :
j1
Selon que i <10 faire jj+1
Ou i=5 faire jj*6
Ou i>8 faire jj*i

Solution :
MOV AL,01
CMP CL,0A ; i=10?
JNL etq1
INC AL ;AL  AL+1
JMP etq3
etq1 CMP CL,05 ;i=5 ?
JNE etq2
MUL 06 ;AX AL * 06
JMP etq3
etq2 CMP CL,08 ;i=8 ?
JNG etq3
MUL CL ;AX  AL * CL
JNE etq3
etq3 NOP
Exercice N°10 :
Ecrire le programme assembleur correspondant à l’algorithme suivant :
a  50
Pour i de 1 à 20 faire
Pour j de i à 30 faire
aa+2
Fin pour
Fin pour
Solution :
MOV AX,32 ; a  50
MOV CX,01 ; Pour i de 1 à 20
etq2 MOV BX,CX ;Pour j de i à 30
etq1 ADD AX,02 ;a  a +2
INC BX
CMP BX,1E ;Comparer j avec 30
JLE etq1
INC CX
CMP CX,14 ;Comparer i avec 20
JLE etq2

Exercice N°11 :
Un tableau trié de 10 valeurs de 16 bits est stocké en mémoire à partir de l’adresse mémoire 700h :200h.
Nous voulons insérer une valeur dans ce tableau en gardant le trie. La valeur à entrer est stockée dans la case
mémoire 700h :250h.
- Ecrire un programme en langage assembleur du 8086, pour résoudre ce problème.
Solution:
MOV BX,0000
MOV CX,0000
ETQ1 MOV AL,[BX+200]
CMP AL,41
JNZ ETQ 2
INC CX
ETQ2 CMP AL,2E
JZ ETQ 3
INC BX
CMP BX,0100
JNZ ETQ1
ETQ3 MOV [0350], CX