0% ont trouvé ce document utile (0 vote)
34 vues15 pages

Plan Du Cours: Chapitre 1. Introduction À L'archi. Des Ordi

maths

Transféré par

saad doudou
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)
34 vues15 pages

Plan Du Cours: Chapitre 1. Introduction À L'archi. Des Ordi

maths

Transféré par

saad doudou
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

Plan du cours

Chapitre 1. Introduction à l’archi. des ordi.


Chapitre 2. Circuits logiques
Chapitre 3. Unités fonctionnelles
Chapitre 4. Présentation du μp 8086 et environnement Emu8086.
Chapitre 5. Jeu d’instruction du μp 8086
Chapitre 6. Modes d’adressage
Chapitre 7. Variables et sauts
Chapitre 8. Interruptions et accès aux entrées sorties
58

Chapitre 4 . Jeu d’instruction

Dans ce chapitre

I. Transfert et permutation

II. Addition et soustraction.

III. Calculs avec retenue.

IV. Multiplication et division.

V. Calculs logiques.

VI. Décalages et rotations.

59

1
I. Transfert et permutation
1. Transfert : MOV
2. Permutation : XCHG

Chapitre 5. Jeu d’instructions


I. Transfert et permutation
1. Transfert : MOV
Charger une valeur dans une destination
Syntaxe:
MOV destination , source ; destination ← source
Exemples :
MOV AL , 0 ; AL ← 00h
MOV n , AL ; n ←(AL)

MOV AL , BX ; erreur
MOV AL , 22b8h ; erreur
MOV CS , AX ; erreur

61

2
Chapitre 5. Jeu d’instructions
I. Transfert et permutation
1. Transfert : MOV
Mouvements autorisés :

MOV Registre général, Registre quelconque | Mémoire | Constante

MOV Mémoire, Registre quelconque | Constante

MOV Registre de segment(DS,SS,ES), Registre général


Taille:
Source et destination doivent avoir la même taille.
Exception: taille constante <= taille registre.

62

Chapitre 5. Jeu d’instructions


I. Transfert et permutation
2. Permutation : XCHG
XCHG vient de «eXCHanGe» = Permuter = échanger les contenus
Syntaxe:
XCHG Destination1, Destination2 ; p e r m u t e r D e s t i n ati o n 1 avec Destination2
Exemples :
XCHG AL, AH ;échanger le contenu de AL avec celui de AH
;si AL=10h et AH=30 , après XCHG AL, AH on
;aura AL=30h et AH=10
XCHG Alpha, BX ;échanger le contenu de BX avec celui de Alpha
XCHG DX, Beta ;échanger le contenu de DX avec celui de Beta
Mouvements autorisés :
XCHG Registre général, Registre général
XCHG Registre général, Mémoire
XCHG Mémoire, Registre général

63

3
II. Addition et soustraction
1. Addition et soustraction sans retenue
2. Incrémentation et décrémentation
3. Inverse et comparaison

Chapitre 5. Jeu d’instructions


II. Addition et soustraction.
1. Calcul sans retenue
Syntaxe:
ADD Destination, Source ; ADDition
SUB Destination, Source ; SUBtraction
Exemples :
ADD AX,BX ; AX ← AX +BX
SUB AX,BX ; AX ← AX – BX
SUB BX,8 ; BX ← BX – 8
Remarques :
➢ Durant l’opération: l’état initial du bit CF (registre d’état) n’intervient pas
dans les calculs;
➢ A l’issue de l’opération : l’état du bit CF peut être modifié.
➢ Les FLAG affectés: CF; OF; AF; SF; ZF; PF
➢ Exemple: Mov al,02h
1) Add al,03h ;al contient 02h+03h=05h avec CF=0; OF=0; AF=0; SF=0; ZF=0; PF=1
2) Add al,FFh ;al contient 02h+0FFh=01h avec CF=1; OF=0; AF=1; SF=0; ZF=0; PF=0

65

4
Chapitre 5. Jeu d’instructions
II. Addition et soustraction.
2. Incrémentation et décrémentation
Syntaxe:
INC Destination ; INCrémenter la valeur dans Destination
DEC Destination ; DECrémenter la valeur dans Destination

Exemples :
INC AX ; AX ← AX +1
DEC BX ; BX ← BX – 1
Remarques :
➢ INC AX produit la même chose que ADD AX,1 mais :
▪ L’opcode de INC AX est de 1 octet ;
▪ L’opcode de ADD AX,1 est de 3 octets.
➢ DEC BX produit la même chose que SUB BX,1 mais :
▪ L’opcode de DEC BX est de 1 octet ;
▪ L’opcode de SUB BX,1 est de 3 octets.
➢ On ne peut pas incrémenter ou décrémenter une valeur immédiate.

66

Chapitre 5. Jeu d’instructions


II. Addition et soustraction.
2. Inverse et comparaison
Syntaxe:
NEG Destination ; NEGatif de la valeur dans Destination
CMP Source1,Source2 ; CoMParer Source1 et Source2 sans mettre
; le résultat dans Source1
Exemples :
NEG AX ; AX ← -AX
CMP AX,BX ; calculer AX-BX sans mettre le résultat dans AX
;=> modification des indicateurs seulement
Remarques :
➢ Le résultat est utilisable avec les instructions de sauts (voir ultérieurement)
➢ Les indicateurs susceptibles d'être touché avec CMP sont : OF, SF, ZF, CF, PF,AF ;
➢ CMP permet de comparer deux nombres selon les règles suivantes:

67

5
III. Calculs avec retenue
1. Addition et soustraction avec retenue(bit CF)
2. Addition et soustraction sur plus que 16bits
3. Modifier les indicateurs CF,DF et IF

Chapitre 5. Jeu d’instructions


III. Calculs avec retenue
1. Calcul avec le bit CF
Syntaxe:
ADC Destination, Source ; ADdition with Carry.
SBB Destination, Source ; SuBtraction with Borrow.
Exemples :
ADC AX,BX ; AX ← AX+BX+CF
SBB AX,BX ; AX ← AX–BX-CF
Remarques :
➢ Durant l’opération: l’état initial du bit CF intervient dans le calcul;

➢ A l’issue de l’opération : l’état du bit CF peut être modifié.

➢ Ces opérations peuvent être utilisées dans les calculs sur 32 bits,48,64,..

69

6
Chapitre 5. Jeu d’instructions
III. Calculs avec retenue
2. Calcul sur plus que 16bits
Calcul sur 32 bits: N1=125CB8Ch + N2=54EF7A88h = 56154614h:
Partie forte Partie faible
N1= 125CB8Ch (32 bits) 0125 (16 bits) CB8C (16 bits)
N2=54EF7A88h (32 bits) 54EF (16 bits) 7A88 (16 bits)
a. Décomposition de calcul sur partie faible 16bits et partie forte 16bits:
Parties faibles: CB8Ch + 7A88h => dans AX avec un bit CF
Parties fortes: 0125h + 54EFh + CF => dans BX
b. Additionner les parties faibles: avec ADD ou (ADC: attention)
MOV AX, CB8Ch
ADD AX,7A88h
c. Additionner les parties fortes: avec ADC
MOV BX, 0125h
ADC BX, 54EFh
d. Finalement, le programme est :
MOV AX, CB8Ch
MOV BX, 0125h
ADD AX,7A88h ; AX contient la partie faible de N1+N2 = 4614h
ADC BX, 54EFh ; BX contient la partie forte de N1+N2 = 5615h
70

Chapitre 5. Jeu d’instructions


III. Calculs avec retenue
3. Modifier les indicateurs CF,IF et DF
Le 8086 offre 3 instructions pour modifier l’état du bit CF :

➢ STC (SeT Carry flag) permet de mettre CF à 1 ;

➢ CLC (CLear Carry flag) permet de mettre CF à 0 ;

➢ CMC (CoMplement Carry flag) permet d’inverser l’état du bit CF.

2 instructions pour modifier l’état du bit IF :

➢ STI (SeT Interrupt flag) permet de mettre IF à 1 ;

➢ CLI (CLear Interrupt flag) permet de mettre IF à 0 ;


2 instructions pour modifier l’état du bit DF :

➢ STD (SeT Direction flag) permet de mettre DF à 1 ;

➢ CLD (CLear Direction flag) permet de mettre DF à 0 ;

71

7
IV. Multiplication et division
1. Multiplication non signée
2. Multiplication signée
3. Division non signée
4. Division signée
5. Conversion de l’accumulateur

Chapitre 5. Jeu d’instructions


IV. Multiplication et division
1. Multiplication non signée : MUL
Principe:
• La multiplication est différente de l'addition et la soustraction.
• On utilise les registres AX (Al et AH) et DX selon les cas.
Syntaxe pour calculer opérande1*opérande2:
MUL Source ;Source contient opérande2
;opérande 1 est dans AL ou AX selon les cas suivants:
opérande 1 opérande 2 Résultat
octet*octet AL Registre ou mémoire (8bits) AX
mot*mot (mot=16bits) AX Registre ou mémoire (16bits) DX AX
mot*octet AL=octet; AH=0 Registre ou mémoire (16bits) DX AX

Exemples:
10h*F8h=0F80h 452Bh*4D89h=14F2F303h 452Bh*D0h= 3832F0h

73

8
Chapitre 5. Jeu d’instructions
IV. Multiplication et division
2. Multiplication signée : IMUL
Lorsque les opérandes et le résultats sont des ombres signés on utilise
la mnémonique IMUL de la même façon que MUL.
Exercice: Calculer en hexadécimale : 300h*(400h-86h)+2456987h
1- calculer 400h-86h dans BX
2- mettre 300h dans AX et calculer AX*BX dans DX AX sans signe
3- décomposer 2456987h en 245h partie forte et 6987h partie faible
4- calculer AX+6987h dans AX sans tenir en compte CF (ADD)
5- calculer DX+245h dans DX en tenant CF en compte (ADC)

le résultat est dans DX AX=024FD787

74

Chapitre 5. Jeu d’instructions


IV. Multiplication et division
3. Division non signée : DIV
Principe:
• La division euclidienne génère un quotient et un reste.
• Exemple: 14÷4 donne un quotient=3 et un reste = 2 (car 14=3*4+2)
• Pour calculer opérande1 ÷ opérande2 on utilise implicitement:
➢ AX ÷ opérande2 ou (DX AX) ÷ opérande2
➢ Selon la taille de opérande2 (et opérande1)
Syntaxe :
DIV Source ;Source contient opérande2
;opérande 1 est dans AX ou DX AX selon les cas :

opérande 1 opérande 2 quotient reste


mot ÷ octet AX Registre ou mémoire (8bits) AL AH
(Double mot) ÷ mot DX AX Registre ou mémoire (16bits) AX DX

75

9
Chapitre 5. Jeu d’instructions
IV. Multiplication et division
3. Division non signée : DIV
Exemples:
452Bh ÷ 4Dh
q=E5h => AL
r=4Ah => AH

4875452Bh ÷ D827h
q=55D0h => AX
r=B27Bh => DX
Attention:
La taille du quotient => ne doit pas dépasser la taille AL ou AX, sinon erreur!
=> majorée par : Taille dividende – Taille diviseur +1
F52Bh ÷ 4Dh 452Bh ÷ 40h
q=32Fh =>AL ??? q=114h =>AL ???

76

Chapitre 5. Jeu d’instructions


IV. Multiplication et division
4. Division signée : IDIV
Principe:

• La division euclidienne signée est possible avec le mnémonique IDIV.

• Le mnémonique IDIV est utilisé similairement à DIV.

• Les opérandes sont des nombres signés (en complément à 2).

• Le quotient et le reste sont aussi des nombres signés.

Exemples:

14÷-4 => (q = -3 , r = 2) ; car 14 = -3*-4+2

-14÷4 => (q = -3 , r = -2) ; car -14 = -3*4-2

77

10
Chapitre 5. Jeu d’instructions
IV. Multiplication et division
4. Division signée : IDIV
Exercice
Ecrire du code assembleur pour calculer les expressions ci-après en
indiquant les emplacements des résultats:

➢ 100÷10 sur 8bits

➢ -100÷10 sur 8bits

➢ -100÷10 sur 16bits

78

Chapitre 5. Jeu d’instructions


IV. Multiplication et division
5. Conversion de l’accumulateur: CBW, CWD
CBW : Convert Byte to Word
Conversion de l’accumulateur AL 8 bits à un mot de 16 bits signé dans AX.
Exemple:
MOV AL, 50h ;( SF=0).
CBW ; AX ← 0050h
MOV AL, 80h ; (SF=1).
CBW ; AX ← FF80h
CWD : Convert Word to Double
Conversion de l’accumulateur AX 16 bits à 32 bits signé dans DX AX.
Exemple:
MOV AX, 4002h ; (SF=0)
CWD ; DX: AX => 00004002h.
MOV AX, 80FFh ; (SF=1)
CWD ; DX: AX => FFFF80FFh.
Remarque:
Les FLAG restent inchangés.

79

11
V. Calculs logiques
1. Principe de calcul
2. Utilisations pratiques

Chapitre 5. Jeu d’instructions


V. Calculs logiques
1. Principe de calcul : and , or , xor, not
▪ En binaire 1=>Vrai et 0=>Faux

A B A AND B A OR B A XOR B Non (A)


Vrai Vrai Vrai Vrai Faux Faux
Vrai Faux Faux Vrai Vrai Faux
Faux Vrai Faux Vrai Vrai Vrai
Faux Faux Faux Faux Faux Vrai

Exemple:
103 AND 23 = 7 car 1100111 AND 10111 = 0000111
103 OR 23 = 119 car 1100111 OR 10111 = 1110111
103 XOR 23 = 112 car 1100111 XOR 10111 = 1110000
NOT(103) = 24 car NOT(1100111)= 0011000

81

12
Chapitre 5. Jeu d’instructions
V. Calculs logiques
2. Utilisations pratiques
▪ AND permet de masquer des bits

MOV AL, 0A9h


AL contient 0A0h, et les bits multipliés par 1b sont retenus
AND AL, 0F0h

▪ OR permet de forcer des bits à 1

MOV AL, 0A9h


AL contient 0F9h, et les bits multipliés par 1b sont retenus
OR AL, 0F0h

▪ XOR permet de réinitialiser un registre à 0 ou d’inverser ses bits

XOR AX,AX Réinitialiser AX à 0

MOV AL, 7Fh AL contient 080h


XOR AL, 0FFh retrouver la négation de la valeur de AL(NOT AL)

82

VI. Décalages et rotations


1. Décalage à gauche
2. Décalage à droite
3. Rotation à gauche
4. Rotation à droite

13
Chapitre 5. Jeu d’instructions
VI. Décalages et rotations
1. Décalage à gauche : SHL et SAL

• Décalage logique gauche SHL (SHift Left);


• Décalage arithmétique gauche SAL(Shift Arithmetic Left)
Syntaxe:
SHL Registre, nombre de bits de décalage
SAL Registre, nombre de bits de décalage
Exemple:
mov ax,2788h
shl ax,3
mov bl,-89
sal bl,1
Remarque:
• Dans le décalage arithmétique, le bit de signe ne change pas.

84

Chapitre 5. Jeu d’instructions


VI. Décalages et rotations
2. Décalage à droite : SHR et SAR

Décalage droite SHR (SHift Right); • Décalage arithmétique droite


SAR(Shift Arithmetic Right)
Syntaxe:
SHR Registre, nombre de bits de décalage
SAR Registre, nombre de bits de décalage
Exemple:
mov ax,2788h
shr ax,3
mov bl,-89
sar bl,1
Remarque:
• Dans le décalage arithmétique, le bit de signe ne change pas.

85

14
Chapitre 5. Jeu d’instructions
VI. Décalages et rotations
3. Rotation à gauche : ROL et RCL

• Rotation gauche ROL • Rotation gauche en incluant la retenue


(ROtate Left); RCL (Rotate Through Carry Left)
Syntaxe:
ROL Registre, nombre de bits de rotation
RCL Registre, nombre de bits de rotation
Exemple:
mov al,88h ; Charge la valeur binaire 10001000 dans AL
rol al,1 ; Effectue une rotation à gauche de 1 bit
; résultats: al=00010001 et CF=1
mov bl,0101111b ; Charge la valeur binaire 00101111 dans BL.
stc ; Active le bit de retenue
rcl bl,1 ; Effectue une rotation à gauche de 1 bit en
; incluant le bit de retenue.
; résultats: bl=01011111 et CF=0
Remarque:
• La rotation à n bits, applique la même rotation n fois sur un seul bit
86

Chapitre 5. Jeu d’instructions


VI. Décalages et rotations
3. Rotation à droite : ROR et RCR

• Rotation droite ROR • Rotation droite en incluant la retenue


(ROtate Right); RCR (Rotate Through Carry Right)
Syntaxe:
ROR Registre, nombre de bits de rotation
RCR Registre, nombre de bits de rotation
Exemple:
mov al,88h ; Charge la valeur binaire 10001000 dans AL
ror al,1 ; Effectue une rotation à droite de 1 bit
; résultats: al=01000100 et CF=0
mov bl,0101111b ; Charge la valeur binaire 00101111 dans BL.
stc ; Active le bit de retenue
rcr bl,1 ; Effectue une rotation à droite de 1 bit en
; incluant le bit de retenue.
; résultats: bl=10010111 et CF=1
Remarque:
• La rotation à n bits, applique la même rotation n fois sur un seul bit
87

15

Vous aimerez peut-être aussi