Professional Documents
Culture Documents
(cours)
I. Historique
1) Les précurseurs
2) L’unité centrale
C’est elle qui exécute les instructions. Elle comporte des registres qui sont des
zones privilégiées de stockage de l’information (données et instructions).
Cette information sera codée dans ces registres par une suite de 0 et de 1.
8086 registres de 16 bits
80386 registres de 32 bits
3) La mémoire
5) Les bus
6) Les instructions
1) Les registres
• AX : 16 bits
(Subdivisé en deux registres 8 bits : AH, AL)
Accumulateur (contient en particulier les résultats)
• BX (BH, BL)
Registre de base , sert souvent de registre d’adressage
• CX (CH, CL)
Compteur (dans les instructions de répétition)
• DX (DH, DL)
Registre de donnée , c’est une extension de l’accumulateur
• BX
• BP
Pointeur de base (travaillé dans la pile)
• SI, DI
Registres d’index (mémoire)
• SP
Indique le sommet de la pile
• CS
Pointeur du segment de code
• DS
Pointeur du segment de donnée
• SS
Pointeur du segment de pile
• ES
Autre segment de donnée
Les registres de contrôle :
Les adresses des octets de la mémoire sont codées sur 20 bits (mode réel).
Mais les registres étant sur 16 bits, l’espace adressable est de 2^16 octets (64
Ko). Ceci était la limite du Dos pendant longtemps.
Il y a 4 types de segments :
• Le segment de code :
Repéré par le registre CS.
Il contient les instructions en cours d’exécution. Il contient
l’adresse dans le segment de code de la prochaine instruction à
exécuter.
• Le segment de pile :
Repéré par le registre SS.
Il contient les données temporaires structurées sous forme d’une
pile.
Le sommet de cette pile est indiqué par le registre SP.
Le registre BP permet de travailler dans le pile (Æ on peut
prendre des choses au milieu de la pile !).
L’ADRESSAGE :
Le mode réel :
segment x 16
adresse
déplacement physique
V. Les instructions
a) adressage direct :
adresse effective : BX
adresse logique : DS : BX
adresse physique : DS x 16 x BX
d) adressage immédiat :
ex : MOV AX, 12
e) adressage direct :
Transfert 16 bits :
MOV reg,[mém]
regH Å [mém + 1] mém
regL Å [mém] mém + 1
H L
MOV [mém],reg
[mém + 1] Å regH
[mém] Å regL
(8 bits) AX Å AL * source
(16 bits) (DX, AX) Å AX * source
DIV source
(8 bits) AH Å AX % source
AL Å AX / source
(16 bits) DX Å (DX, AX) % source
AX Å (DX, AX) / source
3 instructions :
AND but, source ; but Å but et source
OR but, source ; but Å but ou source
XOR but, source ; but Å but ou exclusif source
VIII. Les comparaisons
(instruction à 2 opérandes)
Les instructions sont exécutées de façon séquentielle par la mise à jour du compteur
cardinal (IP). Cette séquence est rompue lors de l’exécution de sauts.
1) sauts inconditionnels
JMP adr
IP Å adr
Adressage direct :
2) sauts conditionnels
Syntaxe générale :
Jcond adr
• test d’égalité :
JE Æ si ZF = 1 (=)
JNE Æ si ZF = 0 (!=)
• test d’ordre :
codage binaire vrai :
JA CF = 0 et ZF = 0 (>)
JB CF = 1 et ZF = 0 (<)
JAE CF = 0 et ZF = 1 (>=)
JBE CF = 1 et ZF = 1 (<=)
Codage complément à 2 :
JG ZF = 0 et SF = OF (>)
JL SF != OF (<)
JGE SF = OF (>=)
JLE ZF = 1 et SF != OF (<=)
LOOP (boucle)
Æ décrémente CX
Æ teste si CX est nul, sinon va à l’adresse indiquée par l’argument.
2 opérations :
PUSH
POP
Æ empiler
Æ dépiler } modifie contenu de SP.
Si BP = SP ; SP = sommet de la pile
DEC BP Î PUSH AX
DEC BP
MOV [BP], AX
Ex : PUSH AX
PUSH BX
PUSH CX ; sauvegarde des registres AX, BX, CX dans la pile
POP CX
POP BX
POP AX
Exécution de sous-programmes :
2 instructions :
CALL
RET
Ex : i = xor(i,j)
PUSH BP
MOV BP,SP
MOV BX,[SP : BP+6] BP
BP +2
MOVAX,[SP : BP+8]
RET +2
POP BP
SI +2
RET
DI +2
- passage de paramètres :
Les paramètres sont placés sur la pile par l’appelant ainsi que l’adresse de
retour (provoqué par l’instruction CALL).
Toutes ces infos sont dépilées au retour par l’appelant.
- Traduction du RETURN
Les valeurs sont retournées dans le registre AX si on est en 16 bits, dans le
registre DX,AX si on est en 32 bits.
Démarrage
.1 Attente commande
Enregistrement commande
Exécution commande
Retour .1
Pendant que le processeur exécute une commande, il rafraîchit l’écran dans les
1/50e de seconde Æ principe du temps partagé.
La machine possède une horloge couplée au processeur ; à intervalles réguliers,
l’horloge rappelle au processeur en envoyant des signaux qu’il faut interrompre la
tâche qu’il exécutait et appelle le gestionnaire d’écran pour lui demander de
rafraîchir l’image.
2 types d’interruptions :
INT numéro
SP Å SP – 2
[SS : SP] Å indicateurs
SPÅ SP – 2
[SS : SP] Å CS
SPÅ SP – 2
[SS : SP] Å IP
IP Å table d’interruptions[numéro]
IRET
Discute l’exécution vers une instruction dont l’adresse est donnée dans la pile.
Le registre des indicateurs est remis en place.
IP Å [SS SP]
SP Å SP + 2
CS Å [SS SP]
SP Å SP + 2
Indicateurs Å [SS SP]
SP Å SP + 2
interruptions
matérielles
(BIOS) BIOS= Basic Input / Output System
Réservé
Disponibles
20 fin du programme
21 appel à DOS
23 CTRL BREAK
24 erreur fatale
25 lecture d’un secteur disque
26 écriture d’un secteur disque
INT 21
• lecture du clavier
• affichage
• gestion des fichiers
L’ASSEMBLEUR
Les macro assembleur introduisent des directives qui sont des ordres donnés au
macro assembleur et remplacent les adresses hexa par des adresses
symboliques (labels).
Æ fait ressembler les macro-assembleurs à des langages de "haut niveau".
[LABEL :] [OPERATEUR OPERANDE] [ ; COMMENTAIRES]
Les directives ou pseudo-instructions
Ex : DOS EQU 33
longueur EQU $_message
e) duplication : TIMES
duplique des instructions ou des données
f) accès aux zones mémoires déclarées par DB, DW, RESB, RESW :
ex : SEGMENT .bss
int var resw 1
SEGMENT .text
..start
SEGMENT data
SEGMENT code
..start : mov ax, data
mov ds, ax
• le registre SS
SEGMENT stack
Resw 64
SEGMENT code
..start : mov ax, stack
mov SS, ax
En NASM on a 2 directives :
GLOBAL et EXTERN
• GLOBAL :
Indique que certains symboles peuvent être accessibles à un autre
module.
SEGMENT data
GLOBAL MemVar, Tableau 1
MemVar DW 10
Tableau 1 RESP 100
SEGMENT code
GLOBAL Proc
Proc1 :
(…)
RET
• EXTERN :
Utilisé pour rendre les labels d’autres modules accessibles à un module
donné.
SEGMENT data
EXTERN MemVar Word, Tableau 1 BYTE
SEGMENT code
EXTERN Proc1
Nasm permet de définir des petits modules utilisables dans le code assembleur.
Sera réécrit en :
Sera réécrit en :
MOV ax, 1 + 2 * 8
ce qui correspond à :
mafct : push bp
mov bp, sp
sub sp, 12
main ( )
{
}
ex : #include <stdio.h>
main ( )
{
printf (« hello word ») ;
}
a) fonctions :
b) les procédures :
void nom_proc (liste_des_paramètres_en_entrée_et_sortie)
{
}
A l’appel :
Indiquer les paramètres passés par adresse & nom_variables.
Ex : main ( )
{
int x, y ;
x=4;
y=5;
échange (&x, &y)
} /* après l’appel : x = 5 et y = 4 */
XIII. C et assembleur
• Traduction du « return » :
Dans le registre AX si on est en 16 bits, dans les registres DX, AX si on est
en 32 bits.
Ex : c = xor (i, j)
Push di ; valeur de j
Push si ; valeur de i
Call xor
Pop cx
Pop cx
Mov si, ax return
i
Dans la fonction la pile aura la configuration suivante : j
Ex : void lire ( )
{
int i, j, h, l ;
SI et DI pile
}
Push BP
Mov BP, SP
Sub SP, 4
Mov [BP – 2], 6 ;k=6
Mov SI, 3 ;i=3
1) instruction de lecture
IN AL, DX
OUT DX , AL
Elles sont provoquées par les boîtiers externes pour signaler au processeur un
événement et lui permettre de le traiter.
µproc.
Æ RESET
Æ NMI
Æ INTR
Å INTA
• RESET
Il force les registres aux valeurs suivantes :
CS Å 0FFFFh
IP Å 0
DS Å 0
SS Å 0
ES Å 0
• NMI
Evénements exceptionnels (erreur de parité, mémoire, …). Le
processeur termine l’instruction en cours, sauvegarde les indicateurs,
CS et IP sur la pile et exécute l’interruption 2.
• INTR
Evénements liés aux E/S.
Le processeur termine l’instruction en cours, sauvegarde les
indicateurs, CS et IP sur la pile et exécute la routine d’interruption dont
le n° est déposé sur le bus de données et envoie un signal
d’acquittement (INTA) lorsque l’interruption est autorisée (IF = 1) ;
4) Le boîtier contrôleur d’interruption 8259
gère les priorités entre les différents événements externes et assure l’interface
avec le processeur en fournissant le n° de l’interruption sur le bus de données.
Masquage :
Mov dx, 21h ; registres des masques
IN al, dx ; lecture
Or al, 01 ; masquage de l’ interruption 1
OUT dx, al ; écriture
Démasquage :
Mov dx, 21h
IN al, dx
And al, Feh ; démasquage de l’ interruption 1
OUT ax, al
7) Le son
• Dire au 8253 qu’il doit commencer à générer un signal cyclique dès que
l’intervalle entre 2 signaux lui aura été communiqué.
On envoie la valeur 182 sur le port 43h du 8253.
a) la transmission parallèle
Les données sont échangées caractère par caractère.
Tous les bits sont transmis simultanément grâce à l’utilisation d’un fil
par bit.
Cette méthode pose des problèmes de synchronisation qui conduisent à
ne l’utiliser que sur de très courtes distances (bus d’un ordinateur,
imprimante,…).
Les cas du PC :
Un PC autorise jusqu’à 4 ports // , certains ports permettent des
transferts bidirectionnels.
Le BIOS fournit un service d’imprimante spécial, l’INT 17 qui permet
d’initialiser l’imprimante, de récupérer l’état de celle-ci et de lui
envoyer des données.
Les 2 principaux ports // ont leur adresse d’E/S en 278h et 378h.
Protocole de transmission :
- 0,5 µs après l’envoi des données : Stroboscope se met à 0 et ça va
provoquer la mise à 1 de « occupé ».
- dès que le périphérique a traité l’octet, la ligne d’accusé est
positionnée à 0 pendant 0,5 µs au minimum.
- dés que la ligne « accusé » repasse à 1, la ligne « accusé » repasse à 1,
la ligne « occupé » est remise à 0 pour recevoir un autre octet. Le débit
max. théorique est de 500 Ko/s mais dans la pratique, étant donnés les
retards de réponse des périph. On a un taux de transfert d’environ 150
Ko/s.
b) La transmission série
Les différents bits sont transmis successivement sur le même fil. Une
liaison série peut être synchrone ou asynchrone.
réception
horloge d’émission
horloge de réception
START STOP
c) la vitesse de transmission :
Le signal émis est synchronisé sur une horloge lorsqu’un élément
binaire est transmis.
La vitesse de l’horloge donne le débit de la ligne en bauds (nombre de
tops d’horloge par seconde).
code bipolaire
0 1 1 0 0 1 0
e) La modulation
La transmission en bauds de base ne peut être utilisée que sur de courtes
distances (moins de 5 km) car le signal, s’il n’est pas régénéré, se
dégrade avec la distance parcourue.
Sur une longue distance on utilise un signal de forme sinusoïdale.
Pour moduler le signal on utilise un modem (modulateur /
démodulateur).
Ex :
f) La détection d’erreurs (couche liaison)
Dans la plupart des cas c’est la 2ème solution qui est choisie : détection
d’erreur et retransmission de la trame (donnée).
Retour d’acquittement
Emission
Emetteur Récepteur
1) SRAM et DRAM
Les SRAM sont plus rapides mais plus chères. Les mémoires se présentent
physiquement sous la forme de barrettes : les SIMM (= Single Intime Memory
Modules) .
Pour obtenir une mémoire rapide capable de suivre la cadence du processeur on
doit construire une hiérarchie de mémoire.
Chacune des mémoires aura une plus grande capacité que la précédente mais un
accès moins rapide.
Cette hiérarchie se base sur 2 principes :
• Le principe de localité :
La donnée la plus récemment utilisée sera accédée dans un futur
proche Æ un programme n’accède pas à tout le code et à toutes les
données de manière uniforme.
• Les caractéristiques de coût/ performance des technologies
mémoire.
But : fournir un système mémoire presque aussi bon marché que le
niveau le plus bas et aussi rapide que le niveau le plus haut.
Registres Æ mémoire cache Æ mémoire interne Æ disque
Principe :
a) placement de bloc
b) remplacement de bloc
Cache
3) La mémoire virtuelle
Adresse Adresse
virtuelle physique
0 A
4 B C 4
8 C
12 D
A 16
Mémoire virtuelle
B 24
Mémoire principale
physique
D disque