• Aucun résultat trouvé

Architecture des ordinateurs

N/A
N/A
Protected

Academic year: 2022

Partager "Architecture des ordinateurs"

Copied!
21
0
0

Texte intégral

(1)

Architecture des ordinateurs

Chapitre n

4: Jeu d’instructions (Partie I)

ISMAILI ALAOUI El Mehdi

1

Filière: SMI-4

1. Université moulay ismail faculté des sciences de meknès département d’informatique

(2)

Plan

1 Introduction 2 Format d’instruction 3 Déclaration de variables 4 Déclaration des tableaux 5 Manipulation de données 6 Instructions de la pile

Instruction PUSH Instruction POP 7 Instructions arithmétiques 8 Instructions logiques 9 Instructions de tarnsferts

(3)

Introduction

Chaque CPU possède un certain nombre limité d’instructions qu’il peut exécuter.

Ces instructions s’appelles jeu d’instructions.

Le jeu d’instructions décrit l’ensemble des opérations élémentaires que le CPU peut exécuter.

Les instructions peuvent être classifiées en plusieurs catégories selon le type d’action que son exécution déclenche.

å Instructions d’affectation ;

å Instructions arithmétiques et logiques ( ET , OU , ADD,...) ; å Instructions de branchement ( conditionnelle et inconditionnelle ) ; å Instructions d’entrées sorties.

(4)

Format d’instruction

Les instructions et leurs opérandes (paramètres) sont stockées en mémoire principale.

Une instruction est composée de quatre champs :

å Étiquette : Identificateur suivi d’un " :" qui représente l’adresse de stockage de cette instruction.

å Le champ opération qui indique au CPU quelle instruction réaliser.

å Le champ opérande qui contient la donnée brute ou la référence à une donnée en mémoire. Les opérandes séparés par "," dst puis src.

å Commentaire précédé du ( ;). Il sert à ajouter des informations explicatives au sujet du fonctionnement du programme. ou de l’instruction correspondante.

Exemple :

Etq : MOV dst,src ; pour effectuer un transfert de src vers dst

La technique associée à la localisation des opérandes d’une instruction s’appelle l’adressage ou le mode d’adressage .

.

Étiquette : Champ opération Champ opérande ; Commentaire

(5)

Déclaration de variables

1. DB (Define Byte) : Sert à définir un octet, ainsi vous pouvez définir un nombre inférieur à 255 = 28−1.

Exp : X DB 0

2. DW (Define Word) : Définit un mot (16 bits), donc une valeur inférieur ou égale à 65535 = 216−1.

Exp : X DW 65532

3. DD (Define Double) : Définit un mot double (32 bits), donc une valeur inférieur ou égale à 232−1.

Exp : X DD F70ABCDh

4. EQU (EQUivalent) : Affecte un nombre à un label. La valeur ne peut pas être modifiée : c’est une déclaration de constante.

Exp : Pi EQU 3.14 (décimal) X EQU 01010101b (biaire) Y EQU 10h (hexadécimal) 5. ? : On déclare les données non initialisées par ? .

Exp : X DB ?

(6)

Déclaration des tableaux

Les tableaux peuvent être vus comme des chaînes de variables, c’est à dire des suite d’octets.

Exemples ...

...

...

...

...

...

...

...

Lorsque l’on veut déclarer un grand tableau de n cases, toutes initialisées à la même valeur, on utilise la directive dup :

Exemples ...

...

...

...

...

...

(7)

Manipulation de données

1. Operateur offset : Renvoie l’adresse à laquelle située une étiquette de donnée.

Exemples ...

...

...

...

...

...

...

...

2. Operateur PTR : Permet de spécifier la taille des transferts.

Exemples ...

...

...

...

...

...

...

(8)

Instructions de la pile

C’est une région de la RAM appelée segment de pile (Stack Segment (SS)) où l’on va stocker (empiler) ou retirer (dépiler) le contenu des registres ;

Les piles offrent un nouveau moyen d’accéder à des données dans la RAM, qui est très utilisé pour stocker temporairement le contenu des registres ;

La pile est gérée en LIFO (Last IN First Out= dernier entré premier sorti) ;

La pile est implémentée en mémoire et le registre SP pointe sur le haut de la pile, c’est à dire sur la première case mémoire libre à son sommet (SS : SP) ;

Pour accéder à la pile nous auront 2 instructions : PUSH, POP.

(9)

Instructions de la pile Instruction PUSH

Pour empiler (déposer ou ajouter) une donnée sur le sommet de la pile (SS : SP) on peut envisager l’instruction suivante :

PUSH Source ; Pile←Source

⇒La Source peut être un registre ou une case mémoire de 16 bits.

Le résultat de cette instruction est que :

1 Le registre de SP est décrémenté de 2⇒SP←SP-2 ;

2 La source et sauvegardée à l’adresse SS :SP.

Exemple

MOV SP, 20h MOV AX, 1234h MOV BX, ABCDh PUSH AX PUSH BX ....

....

....

....

(10)

Instructions de la pile Instruction POP

Pour dépiler (récupérer ou retirer) une donnée sur le sommet de la pile (SS : SP) on peut envisager l’instruction suivante :

POP Destination ; Destination←Pile

⇒La destination peut être un registre ou une case mémoire de 16 bits.

Le résultat de cette instruction est que :

1 La valeur pointée par SP est sauvegardée dans la destination.

2 Le registre de SP est incrémenté de 2⇒SP←SP+2 ; Exemple

MOV SP, 20h MOV AX, 1234h MOV BX, ABCDh PUSH AX PUSH BX

POP CX⇒ CX←ABCDh

POP BX⇒ BX←1234h ...

...

(11)

Instructions arithmétiques

1. ADD (Addition) : Cette instruction effectue une addition, le résultat est placé dans le premier opérande (Destination←Destination+Source).

Exemple MOV AX, 45h

ADD AX, 7 ; AX vaut maintenant 4Ch

2. ADC (Addition avec retenue) : Cette instruction effectue une addition, mais le résultat varie en fonction de CF.

å Si CF=0 le résultat est le résultat de l’addition.

å Si CF=1 le résultat est incrémenté de 1.

Exemple CF=1 AX = 45h

ADC AX, 2 ; AX vaut donc 48h Si CF= 0, alors AX vaudrait 47h

(12)

Instructions arithmétiques

3. INC (Incrémentation) : Cette instruction incrémente de 1 l’opérande.

Exemple MOV AX,18h

INC AX ; AX contient 19h

4. SUB (Soustraction) : Cette instruction soustrait le deuxième opérande au premier : (Destination←Destination-Source).

Exemple MOV AX,18h

SUB AX, 5 ; AX vaut maintenant 13h

5. SBB (Soustraction avec retenue) : Elle fait aussi une soustraction, mais décrémente en plus de 1 le résultat, si CF=1.

Exemple MOV AX, 18h CF=1

SBB AX, 5 ; AX vaut maintenant 12h

(13)

Instructions arithmétiques

6. DEC (Décrémentation) : Cette instruction décrémente de 1 l’opérande.

Exemple MOV AX, 18h

DEC AX ; AX contient 17h

7. CMP (Comparaison) : Cette instruction effectue une soustraction (comme SUB), mais ne stocke pas le résultat, seuls les indicateurs sont modifies.

Exemple MOV AL, 40h MOV AH, 30h

CMP AL, AH ; Résultat←AL - AH.

Plus la mise à jour des indicateurs : CF←0 ; OF←0 ; SF←0 ; ZF←0.

On peut dire que AL6= AH ou AL est plus grand que AH.

8. NEG (Negation) :Cette instruction effectue un complément à 2 sur l’opérande. En fait, inverse chaque bit de l’opérande et lui ajoute 1. Les indicateurs modifiés : OF - PF - SF - ZF

Exemple

MOV AX,0000 1000b (+8)

NEG AX ; AX= 1111 0111 + 0000 0001= 1111 1000 (-8)

(14)

Instructions arithmétiques

9. MUL (Multiplication ) : Cette instruction effectue une multiplication non signée de l’opérande source avec l’accumulateur :

Syntaxe : MUL Source.

Si la source est un octet : AX←AL*Source Si la source est un mot : DX AX←AX*Source Les indicateurs affectés : CF,OF.

Les indicateurs ZF, SF et PF sont inconnus.

Exemple MOV AL, 20h MOV CL, 02h

MUL CL ; AX←AL*CL ; AX=20h*02h=40h.

10. IMUL (Multiplication signée) : Cette instruction a le même principe de fonctionnement que l’instruction MUL, mais elle supporte les nombres signés.

(15)

Instructions arithmétiques

11. DIV (Division ) : Cette instruction effectue une division non signée de l’accumulateur par l’opérande source :

Syntaxe : DIV Source.

Si la source est un octet : AL←AX/Source et AH ←Reste.

Si la source est un mot : AX←(DX AX)/Source et DX←Reste Les indicateurs CF, OF, ZF, SF et PF sont inconnus.

Exemple MOV DX,0000h MOV AX,2000h MOV CX,0002h

DIV CX ; AX←(DX AX)/CX

;AX←(00002000h)/2=1000h et DX←0000h

12. IDIV (Division signée) : Cette instruction a le même principe de fonctionnement que l’instruction DIV, mais elle supporte les nombres signés.

(16)

Instructions arithmétiques

13. CBW (Convert Byte to Word)

Permet de doubler la taille de l’opérande signé (Byte→Word).

Reproduit le bit 7 (bit de signe) de AL dans AH jusqu’à remplissage de ce dernier.

.

...

...

...

...

...

...

14. CWD (Convert Word to Doubleword)

Permet de doubler la taille de l’opérande signé (Word→Doubleword).

Reproduit le bit 15 (bit de signe) de AX dans DX jusqu’à remplissage de ce dernier.

.

...

...

...

...

...

...

...

(17)

Instructions logiques

1. AND : ET logique entre la destination et la source, le résultat est mis dans la destination. Les indicateurs affectés : PF - SF - ZF. Mais CF=0 et OF=0.

Exemple

MOV AH,1001 1101b MOV BH,0110 1101b

AND AH, BH ; AH←AH ET BH= 0000 1101b

2. OR : OU logique entre la destination et la source, le résultat est mis dans la destination. Les indicateurs affectés : PF - SF - ZF. Mais CF=0 et OF=0.

Exemple

MOV AH,1001 1101b MOV BH,0110 1101b

OR AH, BH ; AH←AH OU BH =1111 1101b

3. XOR : OU exclusif entre la destination et la source, le résultat est mis dans la destination. Les indicateurs affectés : PF - SF - ZF. Mais CF=0 et OF=0.

Exemple

MOV AH,1001 1101b MOV BH,0110 1101b

XOR AH, BH ; AH←AH XOR BH=1111 0000b

(18)

Instructions logiques

4. NOT : Négation logique de la destination, le résultat est mis dans la destination.

Exemple

MOV AX,1001 1101 1110 0110b

NOT AX ;AX= 0110 0010 0001 1001b ...

5. TEST : ET logique entre la destination et la source pour positionner les indicateurs sans modification de destination.

Syntaxe :

TEST Dest, Src ; Résultat←Dest (ET) Src.

. ; Plus la mise à jour des indicateurs.

Exemple ...

...

...

...

...

...

...

...

...

(19)

Instructions de tarnsferts

1. XCHG :Exchange

Elle permet de permuter la source avec la destination.

Exemple ...

...

...

...

...

2. LEA : Load Effective Address

Transfère l’adresse d’offset de la source dans le registre de destination (de type index ou base).

Exemple ...

...

...

...

...

...

...

(20)

Instructions de tarnsferts

3. XLAT : Translate

Permet de remplacer le contenu du registre AL par un octet de la Tab1.

Syntaxe d’utilisation :

On place l’adresse de la Tab1 dans le registre BX MOV BX, offset Tab1

On place l’indice de l’octet à consulter dans AL MOV AL, indice ;0≤indice≤255

XLAT ; AL←[DS :BX+AL].

Exemple

MOV BX, offset Tab_Src MOV AL, 03h

XLAT ..

..

..

..

4. LAHF :Load AH from Flags

Charge AH par les 8 bits du poids faible de registre d’état.

5. SAHF : Store AH into Flags

Place le contenu de AH dans l’octet de poids faible du registre d’état.

(21)

Instructions de tarnsferts

6. LDS : Load Data Segment

Charge le contenu d’une adresse 32 bits dans le registre destination de 16 bits et le registre de segment DS.

Exemple MOV SI, 0100h

LDS BX, WORD PTR [SI]

;BX←le contenu de la case mémoire 16 bits (DS :SI)

;DS←le contenu de la case mémoire 16 bits (DS :SI+2) ..

..

..

..

..

..

..

..

7. LES : Load Extra Segment

Cette instruction est semblable à l’instruction LDS, mais elle utilise le registre de segment ES au lieu de DS.

Références

Documents relatifs

1726K-2 EK / CK Footboard with drawer & Slat / Pied de Lit avec tiroir et lattes-Tres Grand Lit.. A Queen / EK / CK Footboard with drawer & slat / Pied de Lit avec

Er moet altijd voor worden gezorgd dat kabels en andere flexibele componenten niet door de montage of functie kunnen worden ingeklemd.. Overschrijd de aangegeven maximale

Le langage C/C++ offre la possibilité de conditionner un traitement avec l'instruction if (ou

For example, the 32-bit Load Word Pair (LWP) and Load Word Multiple (see two recent examples above for minor op code fields) instructions use the same 6-bit major op code,

Remove the fixture and the mounting packages from the box and make sure that no parts are missing by referencing the illustrations on the installation instructions.. NOTE:

Remarque : Lorsque vous choisissez la fonction cuisson saine, ne mettez pas les aliments dans le four au début. Le four doit d’abord être préchauffé. Après plusieurs

Utilisez toujours un chiffon doux et propre pour épousseter les meubles en bois et déplacez le chiffon dans le sens du fil du bois.. Lorsque vous utilisez un poli pour nettoyer

Secure the straight tube on to the fixture shade, then secure the canopy assembly on to the fixture shade and tighthen it in place.. Secure the threaded tube on to the fixture