You are on page 1of 50
ECOLE MAROCAINE DES IENCES DE LINGENIEUR Modes d’Adressage du 8086 + llexiste différentes fagons de spécifier l'adresse d'une case mémoire dans une instruction : ce sont les modes d'adressage. Il y a plusieurs modes d'adressage dans le 8086 + Adressage registre + Adressage immédiat + Adressage direct + Adressage indirect * Adressage basé * Adressage indexé * Adressage basé-indexé . ECOLE MAROCAINE DES IENCES DE LINGENIEUR Modes d’Adressage du 8086 ADRESSAGE REGISTRE Ce mode d'adressage concee tout transfert ou toute opération, entre deux registres de méme taille. Dans ce mode, le uP effectue toutes les opérations d'une fagon interne et opérande sera stockée dans un registre interne (sauf IP). + Llopération se fait sur un ou deux registres: > INSTR, Rp > INSTR EXEMPLES : INC AX: _ Incrémenter le registre AX MOV AX, BX: Copier le contenu de BX dans AX (AX«-BX); opérandes 16 bit ADD CH, DL: Ajouter le contenu de DL au CH (CH INSTR, VN EXEMPLES : MOV AX, 243: Charger AX par le nombre décimal 243 (AX<-00F3) MOV AL, ‘A’: Charger AL par le code ASCII du caractére ‘A’ (41) MOV AX/AB': Charger AH par le ASCII du caractere ‘A’ (41) et AL par le ASCII du ‘B’ (42) MOV AX, A1EBH: Charger le registre AX par la valeur hexadécimal A1EB MOV AL, 102H: Déclaration d'une erreur, AL est de 8 bits et la valeur 102h est de taille de 12 bits. MOV AX, 40H: Cette instruction est juste, car on peut écrire 40h > 0040h valeur sur 16 bits. 87 ECOLE MAROCAINE DES SCIENCES DE LINGENIEUR Modes d’Adressage du 8086 DRESSAGE DIRECT Dans ce mode d'adressage on spécifie directement 'adresse de opérande dans instruction qui est adresse effective (offset) qui doit étre ajouté au contenu du registre segment pour former ‘adresse physique de 20 bits. + Undes deux opérandes se trouve en mémoire. L’adresse de la case mémoire est précisé irectement dans instruction. ere fay > INSTI@],R > INST taille (@], VN + Ladresse doit étre placée dans [Reeg : Rorsel- + Sie segment (Reeg) n'est pas précisé, le registre DS est pris par défaut comme Reg ECOLE MAROCAINE DES SCIENCES DE LINGENIEUR Modes d’Adressage du 8086 ADRESSAGE DIRECT + Un des deux opérandes se trouve en mémoire. Lladresse de la case mémoire est précisé directement dans l'instruction. > INSTR, [@] > INST [@],R > INST taille [@], VN EXEMPLES : MOV AX, [1234H]; Copier le contenu de la mémoire d'adresse DS:1234H dans AX MOV [0200h] , AX ; Copier le contenu de AX dans la mémoire d'adresse DS:0200H MOV AX, MOV BYTE [1213H],4Ah; Copier la valeur 44 dans la case mémoire DS:1213H MOV WORD [1213H], 44h ; 4A— adresse DS:1213H, et 00 — adresse+1 (c-d-d DS:1214H) :243H ; Copier le contenu de la mémoire SS:243H dans AX ECOLE MAROCAINE DES SCIENCES DE LINGENIEUR Modes d’Adressage du 8086 DRESSAGE INDIRECT Ladressage indirect transfére un octet ou un mot entre un registre et un déplacement mémoire adressés par un intermédiaire (c'est a dire un des 4 registres d'offset suivants: BX, BP, Sl ou Dl) + Un des deux opérandes se trouve en mémoire. L'adresse se trouve dans l'un de ces 4 registres BX, BP, SI ou DL > INSTR, [Reeg Rowell > INST [Ryeg! Rotel »R > INST taille [Reog : Rotsetl » VN + Sile Reeg n'est pas spécifié, le segment par défaut sera utilisé comme suit: Ftssst BX | BP | SI | DI Ryo pardéfaut_ | DS | SS | DS | DS ECOLE MAROCAINE DES SCIENCES DE LINGENIEUR Modes d’Adressage du 8086 ADRESSAGE INDIRECT + Undes deux opérandes se trouve en mémoire. Lladresse se trouve dans l'un de ces 4 registres BX, BP.S1OUDI. stn, factual > INST [Ryeg? Rotrset! ,R > INST taille [Ryeg : Rossel, VN EXEMPLES : MOV AX, [BX]; Transfert de contenu de la case mémoire 16 bits pointer par BX, par rapport au DATA segment vers AX. ADD [SI],DL; — Ajouter le contenu de DL au contenu de la case mémoire 8 bits pointer par DS:SI et stocker le résultats dans Op Déstination ECOLE MAROCAINE DES SCIENCES DE LINGENIEUR Modes d’Adressage du 8086 ADRESSAGE INDIRECT Adressage Basé Adressage Indexé + Adressage Basé-Indexé + Ladressage indirect est divisé en 3 catégories selon le registre dofiset utilisé: Mode Adressage | Basé | _Indexé | Basé indexé BX, DI Registres utilisés as ei Poor BP, SI ECOLE MAROCAINE DES SCIENCES DE LINGENIEUR Modes d’Adressage du 8086 ADRESSAGE INDIRECT BASE + Loffset se trouve dans l'un des deux registres de base BX ou BP. On peut préciser un déplacement (Dep) optionne! qui sera ajouté au contenu de Rpase pour déterminer l'offset: > INSTR, [RoasetDep] > INST [Ruse*Depl, R > INST taille [Ryase+Dep] , VN EXEMPLES : MOV [BX+12], AL; Transfert de contenu de AL vers la case mémoire pointer par (BX+12) par rapport au DATA segment (DS:BX+12). MOV SI, [BP+400] ; Charger SI par le contenu de la mémoire d'adresse SS:BP+400 MOV AX, [ES:BP]; Charger AX par le contenu de la mémoire d'adresse ES:BP ECOLE MAROCAINE DES IENCES DE LINGENIEUR Modes d’Adressage du 8086 ADRESSAGE INDIRECT INDEXE + Loffset se trouve dans l'un des deux registres d’index SI ou DI. On peut préciser un déplacement (Dep) optionnel qui sera ajouté au contenu de Ringex pour déterminer loffset: > INSTR, [Rindex+Dep] > INST [RinaextDep] ,R > INST taille [Ringex+Dep] , VN EXEMPLES : MOV AX, [SI]; Charger AX par le contenu de la mémoire d'adresse DS:S1 MOV AX, [SI+200] ; Charger AX par le contenu de la mémoire d'adresse DS:S1+200 MOV AX, [DI-10] ; Charger AX par le contenu de la mémoire d'adresse DS:DI-10 MOV AX, [ES:SI+4] ; Charger AX par le contenu de la mémoire d'adresse ES:SI+4 ECOLE MAROCAINE DES SCIENCES DE LINGENIEUR Modes d’Adressage du 8086 ADRESSAGE INDIRECT BASE-INDEXE + Lloffset de 'adresse de 'opérande est la somme d'un registre de base (Rhase), d'un registre diindex (Ringex) €t d'un déplacement (Dep) optionnel. Si Rsog n'est pas spécifié, le segment par défaut du registre de base est utilisé : > INSTR, [Rase+Rindex +Dep] > INST [Risse*Ringex Dep], R > INST taille [Ryssc*Rindex+Dep] , VN EXEMPLES : MOV AX, [BX+DI+5] ; AX est chargé par la mémoire d'adresse DS:BX+DI+5 MOV AX, [BX#SI]; AX est chargé par la mémoire d'adresse DS:BX+SI MOV AX,[SS:BP+SI+2] ; AX est chargé par la mémoire d'adresse SS:BP+SI+2 MOV AX, [SS:BP+DI] ; AX est chargé par la mémoire d'adresse SS:BP+DI ECOLE MAROCAINE DES SCIENCES DE LINGENIEUR Modes d’Adressage du 8086 EXERCICE : Identifier le mode d'adressage pour chacune des lignes suivantes: Ne de ligne 1. MOV AL, [000BH] ; 1. Adressage direct 2. ADDAL, C4H ; 2. Adressage immédiat 3. MOV [BX], OOH ; 3. Adressage indirect basé 4, SUBAL, [BX+SI] ; 4, Adressage indirect basé-indexé 5. MOV AX, [BX+DI#5] ; 5. Adressage indirect basé-indexé 6. MOV AX, ‘AB’; 6. Adressage immédiat 7. ADD CH, DL; 7. Adressage registre 8. MOVAX, [SI]; 8. Adressage indirect indexé 9. MOV AX, 5; 9. Adressage immédiat ECOLE MAROCAINE DES SCIENCES DE LINGENIEUR Modes d’Adressage du 8086 EXERCICE : Identifier le mode d'adressage pour chacune des lignes suivantes: Ne de ligne 10.MOV AX, BX; 11. MOV AX, [BX]; 12. MOV AX, [BX+5]; 13.MOV AX, [SI+5]; 14. MOV AX, [BX+SI]; 15.MOV AX, [BX+DI]; 16.MOV AX, [BXI[DII5; 17. MOV AX, [BX#SI+5]; 10. Adressage registre 11. Adressage indirect basé 12. Adressage indirect basé + déplacement 13, Adressage indirect indexé + déplacement 14. Adressage indirect basé-indexé 15, Adressage indirect basé-indexé 16, Adressage indirect basé-indexé 17. Adressage indirect basé-indexé ECOLE MAROCAINE DES ENIEUR Modes d’Adressage du 8086 TAILLE DES ECHANGES AVEC LA MEMOIRE + Lamémoire est organisée en octets. + Lorsqu‘une instruction est effectuée entre un registre et des données en mémoire, le registre determine la taille de opération = Sile registre est sur un octet, opération sera effectuée avec une cellule de mémoire. ~ Sile registre est sur un mot, 'opération sera effectuée avec deux cellules de mémaire. ~ Lorsqu'on effectue une opération entre une constante et une cellule de mémoire, il faut utiliser les préfixes BY ier le nombre d'octets a écrire. TE (octet) et WORD (mot) pour MOV BYTE ptr[@], 44h —> @ 44 | — MOVWORD ptr[@}, 44h ——> @ MOV [@],AL— a MOV [@], AX=— G AL AL aH MOV [SI+1000HI, 142BH 24ABH, DI = C140H et DS = AIBAH 0 * Liadresse effective : ‘adresse physique : * Lladresse physique : 3 z 8 3 8 é 5 2 2 6 8 * Lladresse effective eu ECOLE MAROCAINE DES SCIENCES DE LINGENIEUR Dans la demiére instruction ot 'adressage indirect indexé est employé : Modes d’Adressage du 8086 ACTIVITES : ft ECOLE MAROCAINE DES SCIENCES DE LINGENIEUR Modes d’Adressage du 8086 ACTIVITES: + Soit: SS =1240H, BP = 42A8H et SI = 4010H Autre écriture : Lladresse effective : Lladresse physique : octet d'adresse MOV [BP+SI], 12H sera chargé par la valeur + Indiquer le mode d'adressage pour chacune des instructions suivantes Mov Mov Mov Mov Mov AX, BX CX, 1234H £1000H3, cx AL, CBX] AH, CBX+SI] 100 ECOLE MAROCAINE DES IENCES DE LINGENIEUR Jeu d’Instructions INTRODUCTION + Chaque microprocesseur reconnait un ensemble d’instructions appelé jeu d'instructions fixé par le constructeur. + Une instruction est définie par son code opératoire (opcode). On utilise donc une notation symbolique pour représenter les instructions (mnémoniques). Un programme constitué de mnémoniques est appelé programme en assembleur. + Les instructions peuvent étre classées en groupes : 2 Instructions de transfert de données (MOV, XCHG, Instructions arithmétiques (ADD, SUB, MUL, DIV, Instructions logiques (NOT, AND, OR, XOR, ...); a. Instructions de décalage et de rotation (SHR, SHL, ROL, ROR, ...); : Instructions de branchement (JMP, Jxx, LOOP, ...).. a a a a ECOLE MAROCAINE DES SCIENCES DE LINGENIEUR Jeu d’Instructions LES INSTRUCTIONS DE TRANSFERT + Elles permettent de déplacer des données d'une source vers une destination. MOV MOV O4, Os : Copie 'opérande Source (Os) dans opérande Destination (Od) [Od — Os] MOV R1,R2 R1-R2 MOV R,I@) Re [adr] MOV [@],R [adr] R MOV _R,VN Re im Copier une constante dans une case mémoire MOV taille [adr], VN taille = BYTE ou WORD >< MOV fads fade MOV Reey Reeg ECOLE MAROCAINE DES SCIENCES DE LINGENIEUR Jeu d’Instructions LES INSTRUCTIONS DE TRANSFERT + Elles permettent de déplacer des données d'une source vers une destination. XCHG XCHG Od, Os : Echange de lopérande Source (Os) avec l'opérande Destination (Od) [Od > Os] XCHG R1,R2 RIOR XCHG R,[@] Re [adr] XCHG [@],R DX XCHG [adr], [ade] 103 ECOLE MAROCAINE DES IENCES DE LINGENIEUR Jeu d’Instructions ACTIVITES: 1. Ecrire un code permettant de: = Mettre dans AX la valeur 10FAH — Mettre dans BX la valeur 2234H ~ Permuter le contenu des registres AX et BX 2. Ecrire un code permettant de ~ Mettre dans SI la valeur 10AAH. = Mettre dans DI la valeur 10ABH = Mettre dans [SI] la valeur FFH = Mettre dans [DI] la valeur 33H. = Permuter le contenu des [SI] et [DI] ors ret org ret 10h mov ax, 10FAh mov bx, 2234h xchg ax, bx 100h mov 51, 10AAh mov di, 10ABh mov [si], OFFh mov (dil, 33h xchg [i],b1 xehg bl, (dil xchg (siJ,bl ECOLE MAROCAINE DES SCIENCES DE LINGENIEUR Jeu d’Instructions ACTIVITES: 1. Ecrire un programme en assembleur 8086 qui permet de : = Charger la valeur 100H dans le registre AX. ~ Charger la valeur 20SH dans le registre BX. ~ Permuter les valeurs des registres AX et BX, 2. Refaire la méme chose sans utiliser l'instruction XCHG org ret org ret 108h mov ax, 10h mov bx, 25h xchg ax,bx 100h mov ax, 100h mov bx, 2@5h mov cx, ax mov ax, bx mov bx, cx 105 ft ECOLE MAROCAINE DES IENCES DE LINGENIEUR Jeu d’Instructions LES INSTRUCTIONS ARITHMETIQUES Le 8086 permet dreffectuer les quatre opérations arithmétiques de base: Iaddition, la soustraction, la multiplication et la division. Les opérations peuvent s'effectuer sur des nombres de 8 bits ou de 16 bits signés ou non signés. Les nombres signés sont représentés en complément a 2. ECOLE MAROCAINE DES SCIENCES DE LINGENIEUR Jeu d’Instructions LES INSTRUCTIONS ARITHMETIQUES + Elles permettent d'effectuer les opérations arithmetiques ADD ADD O4, Os : Additionne l'opérande source (Os) et 'opérande destination (Od) et met le résuitat dans lopérande destination (Od). [Od — Od + Os] ADD R1,R2 RIC RLR2 ADD R,I@] Re Reladr] ADD [@],R [adr] CR+fade] ADD R,VN ReRtim ADD _ taille ptr{@], VN [ade] < [adr DX App fad, fade] ECOLE MAROCAINE DES SCIENCES DE LINGENIEUR Jeu d’Instructions EXERCICE: + Liinstruction ADD permet de positionner les flags a ‘1’ ou a ‘0’ selon le résultat de l'opération. Aprés avoir exécuté les deux programmes suivants, quelles sont les valeurs que prennent les flags? Faire un calcul manuel pour justifier la réponse. org 100h a mov al, @D8h * mov ah, @CAh 5 add ah,al ud ret ret org 100h mov bl, 75 ; decimal 7 mov bh, 67; decimal add bh, bl celal cS ECOLE MAROCAINE DES SCIENCES DE LINGENIEUR Jeu d’Instructions LES INSTRUCTIONS ARITHMETIQUES + Elles permettent d'effectuer les opérations arithmetiques ‘SUB SUB Od, Os : Soustrait fopérande source (Os) de l'opérande destination (Od) et met le résultat dans opérande destination (Od). [Od < Od - Os] SUB R1,R2 R1e-R1-R2 SUB R,[@] Re Rade] SUB [adr], [adr] SUB [@],R lade] < [ade PX Su ete Lae SUB R,VN ReR-im SUB taille ptr [@1, VN [adr] <[adr]-im 39h ECOLE MAROCAINE DES SCIENCES DE LINGENIEUR Jeu d’Instructions EXERCICE: + instruction SUB permet de positionner les flags a ‘1’ ou a ‘0’ selon le résultat de 'opération. Apres avoir exécuté les deux programmes suivants, quelles sont les valeurs que prennent les flags? Faire un calcul manuel pour justifier la réponse. org 10h org 100h mov bl, 75; decimal mov bl, 75; decimal mov bh, 67; decimal mov bh, 67; decimal sub bl, bh sub bh, bl ret ret m1 Jeu d’Instructions EXERCICE: ECOLE MAROCAINE DES IENCES DE LINGENIEUR Jeu d’Instructions LES INSTRUCTIONS ARITHMETIQUES + Elles permettent d'effectuer les opérations arithmetiques MUL ‘MUL Os: Effectue une multiplication non signée entre 'accumulateur (AL ou AX) et lopérande (Os). Le résultat de taille double est stocké dans 'accumulateur et son extension (AH ou DX). IMUL Os: Identique 4 MUL excepté qu'une multiplication signée est effectuée. (I) MUL Regs, AX

You might also like