0% ont trouvé ce document utile (0 vote)
241 vues7 pages

TD N 3 Version2

Le document contient la description de plusieurs exercices en assembleur 8086 avec leurs solutions respectives. Les exercices portent sur l'utilisation d'instructions de saut conditionnel et de boucles pour implémenter des algorithmes simples manipulant des registres et des adresses mémoires.

Transféré par

Cesar Malki
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
241 vues7 pages

TD N 3 Version2

Le document contient la description de plusieurs exercices en assembleur 8086 avec leurs solutions respectives. Les exercices portent sur l'utilisation d'instructions de saut conditionnel et de boucles pour implémenter des algorithmes simples manipulant des registres et des adresses mémoires.

Transféré par

Cesar Malki
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

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

Vous aimerez peut-être aussi