26 0 240KB
UNIVERSITÉ ABDERRAHMANE MIRA DE BEJAIA FACULTÉ DE TECHNOLOGIE
DÉPARTEMENT D’AUTOMATIQUE, TELECOMMUNICATION ET ELECTRONIQUE 3ème année Licence – UEF3121 2020/2021
SÉRIE DE TD N° 02 JEU D’INSTRUCTION DU µP INTEL8086 1- Modes d’adressage Exercice 1 : Adresse physique, logique et effective Supposons que DS = 0721h; CS = 631h; SS = h; ES=0721h; SP= FFFEh; BP=0FFBh; AX = 1234h; BX = 0103h; CX=7776h; DX= 8887h; SI = 0001h ; DI= 2222h et IP = 00AAh. Donner l’adresse physique, logique et effective de la case mémoire manipulée par chacune des instructions suivantes et déterminer la valeur de AL après son exécution: 0730Ah 11H • MOV AL, [100h] 0730Bh 22h • MOV AL, [BP] 0730Ch 33h • MOV AL, [BX] 0730Dh 44h • MOV AL, [100h] [SI] 0730Eh 55h • MOV AL, [100h] [SI+2] 0730Fh 66h • MOV AL, ES:[100h] 07310h 77h • MOV AL, [BX][SI] 07311h 88h 07312h 99h 07313h AAh 07314h BBh Exercice 2 : Adressage direct Soit N1, N2, N3 trois nombres de 8bits rangés successivement en mémoire à partir de l’offset 100h. En utilisant le minimum d’instructions MOV et l’adressage direct, mettez la valeur de N1 à la place de N3, N2 à la place de N1 et N3 à la place de N2. Que devient la séquence d’instructions précédente si on considère N1, N2, N3 des nombres de 16bits Exercice 3 : Adressage indirect indexé Soit un tableau T de 4 valeurs à 8bits rangé en mémoire à partir de l’offset 100h. En utilisant l’adressage indexé, écrivez une séquence d’instructions pour permuter les valeurs des cellules T[0] et T[3], T[1] et T[2]. Réécrivez la séquence d’instructions précédente pour un tableau composé de 4 valeurs de 16bits chacune.
2- Manipulation de la pile Pour tous les exercices, on suppose que DS = 0FFFh; CS = 0FFFFh; SS = 3333h; ES=4444h; SP= FFFE; BP=0000h; AX = 1234h; BX = 5554h; CX=7776h; DX= 8887h; SI = 1111h ; DI= 2222h et IP = 00AAh. 3
TD N°2 : Jeu d’instruction du µP 8086
Exercice 1 : Adresses des données empilées/dépilées Donner l’adresse physique de: - la case mémoire cible manipulée par l’instruction : PUSH AX; - la case mémoire source manipulée par l’instruction : POP DX; - la case mémoire source manipulée par l’instruction : PUSH [SI]; - la case mémoire cible manipulée par l’instruction : PUSH [SI]; Exercice 2 : Comprendre l’empilement et le dépilement Donner l’état de la pile après l’exécution des séquences d’instructions suivantes (La pile est initialement vide): (1)
PUSH AX PUSH BX PUSH AX PUSH BX
(2)
PUSH AX PUSH CX PUSH BX POP DX
(3)
PUSH AX PUSH BX POP AX POP BX
Exercice 3 : Empilement et dépilement de données Donner le contenu des registres après l’exécution des séquences d’instructions suivantes: (1) MOV AX, 1234h PUSH AX POP DX
(2) MOV AX, 1234h MOV BX, 5678h PUSH BX PUSH AX POP CX POP DX
(3) MOV AX, 1234h MOV BX, 5678h PUSH BX PUSH AX MOV BP,SP MOV AX,[BP+2] MOV BX,[BP] POP CX POP DX
Exercice supplémentaire Remplacer les séquences d’instructions suivantes par une seule instruction ayant le même effet sur les registres: (1)
PUSH AX POP BX
(2)
PUSH AX PUSH BX POP AX POP BX
4
(3)
PUSH BX POP AX
TD N°2 : Jeu d’instruction du µP 8086
3- Les instructions arithmétiques & logiques Exercice 1 Déterminer le contenu (en hexadécimal) des registres AX, BX et les valeurs des flags après l’exécution de chacune des instructions de la séquence suivante (initialement BX=15, AX=16, CF=OF=AF=1 et SF=ZF=0): AX
BX
CF
OF
SF
ZF
AF
MOV BL,255 XOR BL,1 TEST BL,AL NEG BL CMP BL,-8 ADD AL,BL DEC BL CBW DIV AL IMUL BL Exercice 2 Ecrire une séquence d’instruction qui permet de calculer la somme de quatre nombres de types 16bits rangés en mémoire à partir de l’adresse [0100h]. Le résultat sera défini sur 16bits et sauvegardé à l’adresse [0110h]. Modifier la séquence d’instruction précédente pour calculer la somme de 4 nombres 32bits rangés en mémoire à partir de l’adresse [0100h]. Le résultat sera également définie sur 32bits et sauvegardé à partir de l’adresse [0200h]. Exercice 3 Remplacer les séquences d’instructions suivantes par une instruction unique ayant le même effet sur les registres et les flags (si c’est possible) : SHL AL,1 RCL AH,1
PUSH AX AND AX,BX POP AX
MOV CX,2 MUL CX
NOT AX INC AX
PUSH AX SUB AX,BX POP AX
Exercice supplémentaire Compléter les séquences d’instructions suivantes en ajoutant les valeurs d’opérandes dont la somme positionne les flags cités aux valeurs indiquées. (a) MOV BL,……… ADD BL,……… CF et SF à 1
(b) MOV AX,……… ADD AX,……… CF et SF à 0
(c) MOV AH,……… ADD AH,……… ZF et CF à 1
(d) MOV CX,……… ADD CX,……… ZF et CF à 0
(d) MOV AL,……… ADD AL,……… CF = 1 et OF =0
(e) MOV DX,……… ADD DX,……… CF=0 et OF = 1
(f) MOV DH,……… ADD DH,……… CF et OF à 1
(g) MOV BX,……… ADD BX,……… CF et OF à 0
5
TD N°2 : Jeu d’instruction du µP 8086
4- Les instructions de saut conditionnel et inconditionnel Exercice 1 Exprimer les algorithmes suivants en assembleur (les variables sont de type 16bits): (1) pour i allant de 0 à n faire S ← S+1 fin_pour X←S
(2) pour i allant de n à 0 faire S=S+1 fin_pour X←S
(4)
(3) pour i allant de n1 à n2 faire S=S+1 fin_pour X←S
(5)
(6)
Tanq que y > 0 faire y=y+x
Tanq que y ≤ 10 faire y=y+x
Tanq que 0