Architecture des ordinateurs L’Assembleur L Assembleur 8086 Architecture des ordinateurs A. El magri g
T.Dumartin
IUT Lannion
DĂŠpartement Mesures Physiques
2006 / 2007
Architecture des ordinateurs
T.Dumartin IUT Lannion Prof: A. El magri
DĂŠpartement Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.1 Généralités
J d’i Jeu d’instructions t ti : Les L µP P CISC (Complex (C l Instruction I i Set S Computer):le C )l nombre d’instructions reconnues varie entre 75 et 150. Les µP RISC (Reduced Instruction Set Computer) : entre 10 et 30 instructions ⇒améliorer le temps d d’exécution exécution. Mnémonique: notation symbolique pour représenter les instructions Programme constitué de mnémoniques est appelé programme en Assembleur.
T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.1 Généralités
L instructions Les i t ti peuventt être êt classées l é :
instructions de transfert de données ; instructions arithmétiques ; instructions logiques ; instructions de branchement ...
T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.2 Les instructions de transfert
Permettent P tt t d de déplacer dé l des d données d é d’une d’ source vers une destination : registre vers mémoire ; registre vers registre ; mémoire vers registre.
Remarque : le 8086 n’autorise pas les transferts de mémoire vers mémoire.
T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.2 Les instructions de transfert
S t Syntaxe : MOV destination destination, source Exemples : Adressage par registre: mov ax,bx : charge le contenu du registre BX dans AX. Adressage immédiat. mov al,12H : charge le registre AL avec la valeur 12H Adressage direct mov bl,[1200H] bl [1200H] : transfère le contenu de la case mémoire d’adresse effective (offset) 1200H vers le registre BL.
T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.2 Les instructions de transfert
Adressage direct mov bl,[1200H] : transfère le contenu de la case mémoire d’adresse effective (offset) 1200H vers le registre BL.
T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.2 Les instructions de transfert
Forçage de segment mov bl,es :[1200H]
T.Dumartin IUT Lannion Prof: A. El magri
DĂŠpartement Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.2 Les instructions de transfert
spécificateur de format
mov byte ptr [1100H], 65H : transfère sur 1 octet;
mov word d ptr t [1100H], [1100H] 65H : transfère t fè sur 2 octets. t t
Remarque : les µP Intel rangent l’octet de poids faible à l’adresse la plus basse . T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.2 Les instructions de transfert
adressage basé l’offset est contenu dans un registre de base BX ou BP. Exemples : mov al,[bx] : transfère la donnée dont l’offset est contenu dans le registre de base BX vers AL; Le segment associé est DS mov al,[bp] : le segment associé est le segment de pile SS.
T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.2 Les instructions de transfert
adressage indexé :
L’offset est le contenu de SI ou DI, associés au segment de d données. é
Exemples : mov al,[si] mov [di],bx mov [si+100H],ax [si+100H] ax ou mov [si][100H],ax [si][100H] ax ou mov 100H[si],ax 100H[si] ax
T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.2 Les instructions de transfert
adressage basé et indexé : permet l’adressage de structures complexes : matrices, enregistrements, ... l’ ff t registre l’offset= i t de d base b + registre i t d’index d’i d + valeur l constante. t t Exemples : mov ov aah,[bx+si+100H] ,[b s 00 ]
mov bx,10 mov si,15 mov byte ptr matrice[bx][si],12H
BX et SI jouent le rôle d’indices de ligne et de colonne T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.2 Les instructions de transfert
Exercice: Dans le cas où ces registres ont les valeurs suivantes: BX=324A, BP=2500, AX=36C1, CX=3000, DX=2478 DS=5000, SS=7000, SI=2000, DI=4000, C l l l’ Calculer l’adresse d physique h i de d la l mémoire é i ou l’opérande l’ é d estt sauvegardé, ainsi que le contenu des locations mémoires dans chacun des modes d’adressage d adressage suivants: a- MOV [SI], AL c- MOV [BX], AX e- MOV [BX]+25, DX g MOV [DI+30] g[DI+30], BX i- MOV [BP][SI]+25, DX k- MOV [SI]+75, k [SI] 75, AH
b- MOV [SI+BX+10], AH d- MOV [2540], AX f- MOV [BP]+150, AX h MOV [DI][BX]+19 h[DI][BX]+19, CX j- MOV [BP+SI+180], BX ll- MOV [DI [DI+BP+300], BP 300], AX
T.Dumartin IUT Lannion Prof: A. El magri
2006 / 2007
Département Mesures Physiques 2009/2010
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.3 Les instructions arithmĂŠtiques
9Addition; 9Soustraction; 9M lti li ti 9Multiplication; 9Division Division .
T.Dumartin IUT Lannion Prof: A. El magri
DĂŠpartement Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.3 Les instructions arithmétiques
Addition;
ADD
opérande1, opérande2
L’opération effectuée est : opérande1 é d 1 ← opérande1 é d 1 + opérande2 é d 2 Exemple: p - add ah,[1100H] - add ah,[bx] : - add byte ptr [1200H],05H :
T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
(adressage direct) ; (adressage basé) ; (adressage immédiat).
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.3 Les instructions arithmétiques
Soustraction;
SUB
opérande1, opérande2
L’opération effectuée est : opérande1 é d 1 ← opérande1 é d 1 − opérande2. é d 2 Exemple: p - sub ah,[1100H] - sub ah,[bx] : - sub byte ptr [1200H],05H :
T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.3 Les instructions arithmétiques
Multiplication; MUL
opérande
L’opération effectuée est : AX ← AL x opérande
(si un octet)
ou: (DX, AX) ← AX x opérande
T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
(sur 2 octets)
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.3 Les instructions arithmétiques
Exemples (Mul); a.
b.
mov al,51 mov bl,32 , mul bl
⇒
mov ax,4253 mov bx,1689 mul bx
⇒
c mov al,43 c. al 43 mov byte ptr [1200H],28 mul byte ptr [1200H] T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
AX = 51 × 32
(DX, AX) = 4253 × 1689
⇒
AX = 43 × 28 Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.3 Les instructions arithmétiques
Division; DIV
opérande
L’opération effectuée est : AX ← AX ÷ opérande AL = quotient; ti t
AH = reste t
( i un octet) (si t t)
ou: (DX, AX) ← AX ÷ opérande AX = quotient ti t ett DX = reste. t T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
( (sur 2 octets) t t ) Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.3 Les instructions arithmétiques
Exemples (DIV); a. mov mov div
ax,35 bl,10 , bl
b. mov mov mov div
dx,0 ax 1234 ax,1234 bx,10 bx ⇒
T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
⇒ AL = 3 (quotient) et AH = 5 (reste)
2006 / 2007
AX = 123 et DX = 4
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.3 Les instructions arithmétiques
Autres instructions arithmétiques ; ADC : addition avec retenue
(1 ajoutée si CF = 1);
SBB : soustraction avec retenue (-1 ajoutée si CF = 1); CMP : comparaison sans stockage de résultat INC : incrémentation d’une d une unité ; DEC : décrémentation d’une unité ; IMUL : multiplication signée ; IDIV : division signée. T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086
T.Dumartin IUT Lannion Prof: A. El magri
DĂŠpartement Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.4 Les instructions logiques
Manipule des données « bits » Les opérations logiques de base sont : 9
ET;;
9
OU;
9
OU exclusif ;
9
complément à 1;
9
complément à 2;
9 décalages et rotations. T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.4 Les instructions logiques
ET logique ; AND opérande1, opérande1 opérande2 ⇒ opérande1 ← opérande1 ET opérande2. Exemple:
Application : masquage de bits
T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.4 Les instructions logiques
OU logique ; OR
opérande1 opérande2 opérande1,
⇒ opérande1 ← opérande1 OU opérande2. Application : mise à 1 d’un ou plusieurs bits
mov ah,10110001B or ah,00001010B T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.4 Les instructions logiques
Complément à 1 ; NOT opérande ⇒ opérande ← opérande mov al, 10010001B ⇒ AL = 10010001B = 01101110B. not al Complément à 2 ;
NEG opérande
⇒ opérande é d ← opérande é d +1 Exemple : mov mov neg g add T.Dumartin IUT Lannion Prof: A. El magri
al,25 al 25 bl,12 bl al,bl Département Mesures Physiques 2009/2010
⇒ AL = 25 + (−12) = 13. 2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.4 Les instructions logiques
OU exclusif ; XOR opérande1, opérande2 ⇒ opérande1 ← opérande1 e pe Exemple: mov xor
al,25 al,al
opérande2 opérande2.
⇒ AL = 0.
Instructions de décalages et de rotations ; Déplacement d’un mot vers la gauche ou vers la droite.
T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.4 Les instructions logiques
Décalage vers la droite (Shift Right) ; SHR opérande, n ⇒ décale l’opérande de n positions vers la droite. droite e p e 1: Exemple mov al,11001011B shr al,1 Exemple p 2: décalage g de AL de trois positions. p mov cl,3 shr al,cl T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.4 Les instructions logiques
Décalage logique vers la gauche (Shift Left) ; SHL opérande, n ⇒ décale l’opérande de n positions vers la gauche.
Exemple : mov shl
T.Dumartin IUT Lannion Prof: A. El magri
al,11001011B al,1
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.4 Les instructions logiques
Décalage arithmétique vers la droite ; SAR opérande, n ⇒ Ce décalage conserve le bit de signe . Exemple : mov sar
al,11001011B al 1 al,1
Décalage arithmétique vers la gauche ; SAL opérande, n Identique au décalage logique vers la droite. T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.4 Les instructions logiques
Rotation Ă droite (Rotate Right) ; ROR operande, n Exemple : mov ror
T.Dumartin IUT Lannion Prof: A. El magri
al,11001011B al 11001011B al,1
DĂŠpartement Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.4 Les instructions logiques
Rotation à gauche (Rotate Left) ; ROL opérande, n Exemple : mov rol
T.Dumartin IUT Lannion Prof: A. El magri
al,11001011B al 11001011B al,1
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.4 Les instructions logiques
Rotation à droite avec passage par l’indicateur de retenue ((Rotate Right g through g Carry) y) ; RCR opérande,n p , Exemple : mov rcr
T.Dumartin IUT Lannion Prof: A. El magri
al,11001011B al 11001011B al,1
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.4 Les instructions logiques
Rotation à gauche avec passage par l’indicateur de retenue ((Rotate Left through g Carry); y); RCL opérande,n é d Exemple : mov rcl
T.Dumartin IUT Lannion Prof: A. El magri
al,11001011B al,1
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086
T.Dumartin IUT Lannion Prof: A. El magri
DĂŠpartement Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.5 Les instructions de branchement
¾Modifier l’ordre d’exécution des instructions.
3 types de saut :
saut inconditionnel ; sauts conditionnels ; appel de sous sous-programmes. programmes.
T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.5 Les instructions de branchement
Instruction de saut inconditionnel ; JMP label ⇒ Un saut (jump) vers le label spécifié. Instructions précédant le saut jmp
suite
iinstructions i suivant i lle saut (j (jamais i exécutées) é é ) suite :… ← instruction exécutée après le saut Exemple : boucle : inc dec jmp T.Dumartin IUT Lannion Prof: A. El magri
ax bx boucle
Département Mesures Physiques 2009/2010
2006 / 2007
⇒ boucle infinie. Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.5 Les instructions de branchement
Instruction de saut inconditionnel ; JMP label ⇒ Un saut (jump) vers le label spécifié. IInstructions t ti précédant é éd t le l sautt jmp suite instructions suivant le saut (jamais exécutées) suite :… ← instruction exécutée après le saut Exemple E l : boucle : inc dec jmp T.Dumartin IUT Lannion Prof: A. El magri
ax bx boucle
Département Mesures Physiques 2009/2010
2006 / 2007
⇒ boucle infinie. Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.5 Les instructions de branchement
Instructions de sauts conditionnels ; Jcondition label ⇒ Saut S t sii une condition diti estt satisfaite. ti f it
Remarque : les indicateurs sont positionnés en fonction du résultat de la dernière opération. T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.5 Les instructions de branchement
Instructions de sauts conditionnels ; les sauts arithmétiques. arithmétiques
Ils suivent l’instruction de comparaison : CMP opérande1, p , opérande2 p Exemple :
superieur :
cmp jg jl …
inferieur :
…
T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
ax,bx superieur inferieur f
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.5 Les instructions de branchement
Instructions de sauts conditionnels ; Application On veut additionner deux nombres signés N1 et N2 se trouvant respectivement aux offsets 1100H et 1101H. 1101H Le résultat est rangé g à l’offset 1102H s’il est p positif,, à l’offset 1103H s’il est négatif et à l’offset 1104H s’il est nul.
T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.5 Les instructions de branchement
T.Dumartin IUT Lannion Prof: A. El magri
DĂŠpartement Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.5 Les instructions de branchement
Appel de sous-programmes ; nom_sp
PROC ret ENDP
nom_sp
← instructions du sous-programme ← retour au programme principal
Appel SP:
CALL
call
T.Dumartin IUT Lannion Prof: A. El magri
procédure
← instructions nom sp nom_sp ← appel au SP
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.5 Les instructions de branchement
Appel de sous-programmes ;
T.Dumartin IUT Lannion Prof: A. El magri
DĂŠpartement Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.5 Les instructions de branchement
Fonctionnement de la pile : Pile: zone mémoire Pil é i LIFO (Last (L t In I First Fi t Out O t : dernier d i entré, té premier sorti). E Empiler il : placer l la l donnée d é au sommett de d la l pile il ; Dépiler : lire la donnée se trouvant au sommet de la pile
T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086 5.5 Les instructions de branchement
Fonctionnement de la pile : instruction d’empilage : instruction de dépilage : Exemple :
PUSH POP
opérande opérande
push ax
; empilage du registre AX ...
push bx
; ... du registre BX ...
push [[1100H]] p
; ... et de la case 1100H-1101H
pop
[1100H]
; dépilage dans l’ordre inverse
pop
b bx
pop
ax
Remarque : SP doit être initialisée avant de pouvoir utiliser la pile. T.Dumartin IUT Lannion Prof: A. El magri
Département Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
V. La programmation en assembleur du microprocesseur 8086
T.Dumartin IUT Lannion Prof: A. El magri
DĂŠpartement Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs
T.Dumartin IUT Lannion Prof: A. El magri
DĂŠpartement Mesures Physiques 2009/2010
2006 / 2007
Architecture des ordinateurs