Sunteți pe pagina 1din 149

Mircea DOBRICEANU

SISTEME CU
MICROPROCESOARE





MANUAL

pentru nvmnt cu frecven redus




















Prof. univ. dr. ing. Mircea DOBRICEANU


SISTEME CU MICROPROCESOARE





MANUAL

pentru nvmnt cu frecven redus











Refereni tiinifici:

Prof. univ. dr. ing. Alexandru BITOLEANU Universitatea din
Craiova

Prof. univ. dr. ing. Dan SELITEANU Universitatea din Craiova







Copyright 2012 Universitaria
Toate drepturile sunt rezervate Editurii Universitaria Craiova



Descrierea CIP a Bibliotecii Naionale a Romniei

DOBRICEANU, Mircea

SISTEME CU MICROPROCESOARE /
Mircea DOBRICEANU Craiova: Universitaria, 2012

ISBN 978-




Aprut: 2012
TIPOGRAFIA UNIVERSITII DIN CRAIOVA
Str. Brestei, nr. 156A, Craiova, Dolj, Romnia
Tel.: +40 251 598054

Tiprit n Romnia



Cuprins

SISTEME CU MICROPROCESOARE




CUPRINS



Unitatea
de
nvare
Titlu Pagina
INTRODUCERE 9



1
CONCEPTE GENERALEPRIVIND MICROPROCESOARELE 13
Obiectivele unitii de nvare nr. 1 14
1.1. Definiii i terminologie 14
1.2. Arhitecturile von Neumann i Harvard 19
1.3. Arhitectura de baz a unui microprocesor 20
1.3.1. Structura standard a microprocesorului 20
1.3.2. Unitatea aritmetic i logic (ALU) 22
1.3.3. Unitatea de comand i control 23
1.3.4. Grupul de registre 25
1.4. Principiul de funcionare al microprocesorului 29
Lucrare de laborator: 30
Test de autoevaluare 30
Lucrare de verificare unitatea de nvare nr. 1 31
Rspunsuri i comentarii la ntrebrile din testul de autoevaluare 31
Concluzii 32
Bibliografie unitatea de nvare nr. 1 32



2 MICROPROCESOARELE INTEL 80x86: ARHITECTURI I
MAGISTRALE
33
Obiectivele unitii de nvare nr. 2 34

2.1. Arhitectura INTEL 80x86 34

2.2. Magistrale 40
2.2.1. Aspecte generale 40

2.2.2. Magistrala de date 41

2.2.3. Magistrala de adrese 42

2.2.4. Magistrala de control 43
Lucrare de laborator 44
Test de autoevaluare 45
Lucrare de verificare unitatea de nvare nr. 2 45
Rspunsuri i comentarii la ntrebrile din testul de autoevaluare 45

SISTEME CU MICROPROCESOARE

5
Cuprins
Concluzii 45
Bibliografie unitatea de nvare nr. 2 46



3
MICROPROCESOARELE INTEL 80x86:REGISTRELE I
ORGANIZAREA MEMORIEI
47
Obiectivele unitii de nvare nr. 3 48
3.1. Registrele 48
3.1.1. Aspecte generale 48
3.1.2. Registrele de uz general 49
3.1.3. Registrele de segment 54
3.1.4. Registrele de uz special 56
3.2. Organizarea memoriei 58
Lucrare de laborator 63
Test de autoevaluare 63
Lucrare de verificare unitatea de nvare nr. 3 63
Rspunsuri i comentarii la ntrebrile din testul de autoevaluare 64
Concluzii 64
Bibliografie unitatea de nvare nr. 3 64



4
MICROPROCESOARELE INTEL 80x86: SETUL DE
INSTRUCIUNI
65
Obiectivele unitii de nvare nr. 4 66
4.1. Aspecte generale privind programarea n limbaje de asamblare 66
4.2. Precizri privind reprezentarea numerelor n sistemele cu
microprocesoare
68
4.3. Tipuri de date utilizate n limbaje de asamblare 71
4.4. Setul de instruciuni al microprocesoarelor INTEL 80x86 73
4.4.1. Sintaxa unei instructiuni n limbaj de asamblare 73
4.4.2. Grupe de instruciuni 74
Lucrare de laborator 85
Test de autoevaluare 85
Lucrare de verificare unitatea de nvare nr. 4 85
Rspunsuri i comentarii la ntrebrile din testul de autoevaluare 86
Concluzii 86
Bibliografie unitatea de nvare nr. 4 86



5 MICROPROCESOARELE INTEL 80x86: TEHNICI DE ADRESARE
A MEMORIEI
87
Obiectivele unitii de nvare nr. 5 88
5.1. Tehnici de adresare a memoriei 88
5.1.1. Aspecte generale 88
5.1.2. Moduri de adresare 89
5.2. Ciclurile de baz ale unui microprocesor 93
5.3. Moduri de operare 96
5.4. Execuia instruciunilor 98

Lucrare de laborator
102
Test de autoevaluare 102

SISTEME CU MICROPROCESOARE

6
Cuprins
Lucrare de verificare unitatea de nvare nr. 5 103
Rspunsuri i comentarii la ntrebrile din testul de autoevaluare 103
Concluzii 103
Bibliografie unitatea de nvare nr. 5 104



6 MICROPROCESOARELE INTEL 80x86: LUCRUL CU STIVE I
SUBRUTINE
105
Obiectivele unitii de nvare nr. 6 106
6.1. Caracteristici ale convertoarelor analog numerice (CAN) 106
6.1.1. Aspecte generale 106
6.1.2. Instruciuni pentru lucru cu stiva 109
6.2. Lucrul cu subrutine 111
6.2.1. Aspecte generale 111
6.2.2. Instruciuni pentru lucru cu subrutine 112
6.2.3. Transferul de parametri ntre program i subrutine 116
Lucrare de laborator 116
Test de autoevaluare 117
Lucrare de verificare unitatea de nvare nr. 6 117
Rspunsuri i comentarii la ntrebrile din testul de autoevaluare 117
Concluzii 117
Bibliografie unitatea de nvare nr. 6 118



7
MICROPROCESOARELE INTEL 80x86:SISTEMUL DE
NTRERUPERI
119
Obiectivele unitii de nvare nr. 7 120
7.1. Aspecte generale 120
7.2. ntreruperi software 123
7.3. ntreruperi hardware 125
7.4. Controlerul de intreruperi I8259A 127
Lucrare de laborator 129
Test de autoevaluare 129
Lucrare de verificare unitatea de nvare nr. 7 129
Rspunsuri i comentarii la ntrebrile din testul de autoevaluare 129
Concluzii 130
Bibliografie unitatea de nvare nr. 7 130



8
TEHNICI PENTRU MBUNTIREA PERFORMANELOR
MICROPROCESOARELOR
131
Obiectivele unitii de nvare nr. 8 132
8.1. Paralelismul - tehnica unei prelucrri mai rapide 132
8.2. Coada pentru preluare anticipat ("prefetch queue") 136
8.3. Pipeline - suprapunerea execuiei mai multor instruciuni 138
8.4. Memoria cache - ci multiple de acces la memorie 142
8.5. Arhitectura VLIW 143
8.5.1. Prezentare general 143
8.5.2. Prezentare funcional 144
8.6. Multiprocesarea 147

SISTEME CU MICROPROCESOARE

7
Cuprins
8.6.1. Prezentare general 147
8.6.2. Arhitecturi de sisteme multiprocesor 148

Lucrare de laborator
149
Test de autoevaluare 149
Lucrare de verificare unitatea de nvare nr. 8 150
Rspunsuri i comentarii la ntrebrile din testul de autoevaluare 150
Concluzii 150
Bibliografie unitatea de nvare nr. 8 150




SISTEME CU MICROPROCESOARE

8
Introducere

SISTEME CU MICROPROCESOARE



INTRODUCERE


Sisteme cu microprocesoare este una din disciplinele domeniu (DD21), din planul de
nvmnt (semestrul 7).

Structura acestei discipline este indicat n urmtorul tabel.
Numrul orelor pe semestru/activiti
Total SI S L P
56 28 - 28 -

Obiectivele acestei discipline vizeaz acumularea unor cunotine care s ofere
studenilor o serie de competene generale i specifice, n concordan cu planul de
nvmnt:

a) competene generale:
- obinerea de experien n abordarea unor subiectelor tehnice complexe ntr-un timp
relativ scurt, privind sistemele cu microprocesoare;
- familiarizarea cu cele mai importante arhitecturi de microprocesoare;
- dezvoltarea gndirii logice, nelegerea conceptului de sistem cu microprocesor.

b) competene specifice:
- nelegerea conceptelor precum: magistrala, memorie, interfaarea acestora,
ntreruperi etc;
- nelegerea execuiei unei instruciuni ciclu cu ciclu;
- nsurirea metodelor att teoretice ct i practice n domeniul sistemelor cu
microprocesoare.

Disciplina conine 8 uniti de nvare, enumerate n tabelul urmtor.


SISTEME CU MICROPROCESOARE
9
Introducere

Nr.
crt.
Denumirea unitii de nvare
1. Concepte generale privind microprocesoarele
2. Microprocesoarele INTEL 80x86: arhitecturi i magistrale
3. Microprocesoarele INTEL 80x86: registrele i organizarea memoriei
4. Microprocesoarele INTEL 80x86: setul de instruciuni
5. Microprocesoarele INTEL 80x86: tehnici de adresare a memoriei
6. Microprocesoarele INTEL 80x86: lucrul cu stive i subrutine
7. Microprocesoarele INTEL 80x86: sistemul de ntreruperi
8. Tehnici pentru mbuntirea performanelor microprocesoarelor

Laboratorul se efectueaz pe parcursul a 14 sptmni (2 ore n fiecare sptmn
distribuite conform calendarului disciplinei).
edinele de laborator sunt n concordan cu unitile de nvare. Denumirile lor sunt
detaliate n urmtorul tabel.

Nr.
crt.
Denumirea edintei de laborator
1. Instructajul de protecia muncii; Prezentarea lucrarilor de laborator;
2. Programarea n limbaj de asamblare folosind simulatorul SMS32: utilizarea
registrelor interne;
3. Programarea n limbaj de asamblare folosind simulatorul SMS32: accesul la
memorie;
4. Programarea n limbaj de asamblare folosind simulatorul SMS32: utilizarea stivei i
lucrul cu subrutine;
5. Programarea n limbaj de asamblare folosind simulatorul SMS32: programarea unor
sisteme reale simulate;
6. Programarea n limbaj de asamblare folosind simulatorul SMS32: programarea
folosind ntreruperile;
7. Introducere n sisteme cu microprocesoare;
8. Microsistem cu microprocesor modul Z3EV: descriere i funcionare hardware;
9. Microsistem cu microprocesor modul Z3EV descriere i funcionare software;
10. Microsistem cu microprocesor modul Z3EV: programarea microsistemului folosind
consola;
11. Microsistem cu microprocesor modul Z3EV: programarea microsistemului folosind
PC;
12. Microsistem cu microprocesor modul Z3EV: Programare avansat. Gestionarea
ntreruperilor;
13. Microsistem cu microprocesor modul Z3EV: interfaa de comunicaie paralel;
14. Evaluare final

Disciplina este prevzut cu examen care se va susine n sesiunea de examene.
Modalitatea de evaluare i notare la aceast disciplin se face conform celor indicate
n continuare (la forma de nvmnt zi aceast disciplin este prevzut cu 2 ore de
laborator/sptmn).

SISTEME CU MICROPROCESOARE
10
Introducere

Stabilirea notei finale
(procentaje)
rspunsurile la examen 60%
activiti aplicate atestate la laborator 30%
teste pe parcursul semestrului 10%
teme de control -

Pentru aprofundarea noiunilor cuprinse n unitile de nvare studenii pot consulta o
serie de poziii bibliografice (indicate la fiecare unitate de nvare n parte), dintre care cele
mai reprezentative sunt urmtoarele:
1. Dobriceanu Mircea; Sisteme cu microprocesoare; Manual universitar pentru
nvmntul cu frecven redus, Editura Universitaria Craiova, 2012
2. Dobriceanu Mircea; Sisteme de achiziie i microprocesoare, Editura Universitaria
Craiova, 2003. p. 304, ISBN 973-8043-289-8
3. Rotar Dan; Arhitectura sistemelor de calcul, Editura ALMA MATER, 1997
4. Musc Gheorghe; Programarea n limbaj de asamblare, Editura Teora, 1997

Dup cum se observ, disciplina este prevzut cu un curs multiplicat, curs n format
electronic postat pe sit-ul facultii i platforme de laborator corespunztoare edinelor
enumerate anterior.

Instruciuni pentru parcurgerea materialului de studiu
Pentru a putea parcurge n mod corespunztor materialul ce va fi prezentat n
continuare, studenii trebuie sa posede cunotine temeinice acumulate n anii anteriori de
studiu ntruct Echipamente electrice i electronice pentru autovehicule este n corelaie cu
alte discipline din planul de nvmnt, studiate anterior: Electronic analogic, Msurri
electrice i electronice, etc.
Studenii vor primi gratuit, la nceputul anului de studiu, cursul n format tiprit.
n plus, ei vor primi i parola care le va oferi acces la baza de date cu informaii
arhivate pe sit-ul facultii, corespunztoare acestei discipline.
Pentru a putea descrca i utiliza materialul electronic, studenii trebuie s dispun de
un calculator compatibil IBM PC cu conexiune la INTERNET. Facultatea le ofer aceste
faciliti prin intermediul reelelor de calculatoare din cadrul laboratoaelor de informatic.

Materialul corespunztor disciplinei Sisteme cu microprocesoare este structurat n 8
uniti de nvare ( 4 uniti de nvare de cte 3 ore fiecare i 4 uniti de nvare de cte 4

SISTEME CU MICROPROCESOARE
11
Introducere
ore fiecare), corespunztoare celor 14 cursuri de cte 2 ore de la specializarea
Electromecanic zi. Ca urmare, se recomand cate 2 ore de studiu individual pe sptmn.
Eventuale neclariti vor fi lmurite n cadrul edinelor de laborator, care sunt corelate
cu unitile de nvare.
n plus sunt prevzute consultaii periodice, al cror program se va afia la avizierul
laboratorului.



SISTEME CU MICROPROCESOARE
12
1. Concepte generale privind microprocesoarele

Unitatea de nvare nr. 1




CONCEPTE GENERALE
PRIVIND MICROPROCESOARELE




Cuprins Pagina
Obiectivele unitii de nvare nr. 1 14
1.1. Definiii i terminologie 14
1.2. Arhitecturile von Neumann i Harvard 19
1.3. Arhitectura de baz a unui microprocesor 20
1.3.1. Structura standard a microprocesorului 20
1.3.2. Unitatea aritmetic i logic (ALU) 22
1.3.3. Unitatea de comand i control 23
1.3.4. Grupul de registre 25
1.4. Principiul de funcionare al microprocesorului 29
Lucrare de laborator 30
Test de autoevaluare 30
Lucrare de verificare unitatea de nvare nr. 1 31
Rspunsuri i comentarii la ntrebrile din testul de autoevaluare 31
Concluzii 32
Bibliografie unitatea de nvare nr. 1 32



SISTEME CU MICROPROCESOARE
13
1. Concepte generale privind microprocesoarele
OBIECTIVELE unitii de nvare nr. 1

Principalele obiective ale Unitii de nvare nr. 1 sunt:












1.1. Definiii i terminologie
n cele ce urmeaz se prezent cteva definiii strict necesare pentru nelegerea
noiunilor de baz privind termeni i notaii utilizate n lucrrile din domeniul
microprocesoarelor.
Circuit integrat - component electronic de mici dimensiuni, (cu suprafaa msurat n
milimetri ptrai) ce conine un numr de tranzistoare elementare interconectate; el poate
avea funcii cablate sau programate. Circuitele integrate sunt clasificate n mai multe
categorii, n funcie de densitatea de integrare:
circuite integrate simple;
circuite integrate pe scar medie (MSI - Medium Scale Integration);
circuite integrate pe scar larg (LSI - Large Scale Integration);
circuite integrate pe scar foarte larg (VLSI - Verry Large Scale Integration), etc.
Unitate central sau Unitate central de procesare - acea component a unui calculator
care realizeaz prelucrarea datelor pe baza unui program i controlul ntregului sistem. Se
utilizeaz frecvent notaia CPU (Central Processing Unit) ceea ce desemneaz de data
aceasta n mod exclusiv un microprocesor.
Microprocesor - este un circuit integrat VLSI complex care poate efectua operaii
aritmetice i logice sub controlul unui program memorat, fiind definit ca unitatea central a
unui calculator.
Microcalculator - sistem de calcul n care unitatea central este un microprocesor; un
microcalculator mai cuprinde: blocuri de memorie, circuite pentru transferul informaiei
(porturi de intrare - ieire) i dispozitive periferice - tastatur, monitor, unitate de discuri,
imprimant etc.

nsuirea cunotinelor referitoare la terminologia utilizat
n lucrrile din domeniul microprocesoarelor
nsuirea noiunilor fundamentale referitoare la arhitectura
i funcionarea microprocesoarelor




SISTEME CU MICROPROCESOARE

14
1. Concepte generale privind microprocesoarele
Hardware - ansamblu de elemente care compun un calculator (structuri mecanice, cabluri,
cutii, circuite, etc.).
Software - reprezint un sistem de programe cu care este dotat un calculator.
Sistem de operare - totalitatea programelor care permit utilizatorului accesul deplin la
toate resursele sistemului. Conine programe cu denumiri specifice dup funciile realizate,
care asigur accesul la echipamentele periferice (tastatur, monitor, uniti externe de
memorie etc.) organizarea informaiei sub form de fiiere i o gam larg de operaii
asupra acestora (deschiderea, nchiderea, transferul, afiarea, crearea, tergerea,
modificarea i altele). Cele mai rspndite sisteme de operare sunt MS-DOS, WINDOWS
i LINUX.
Instruciunea - reprezint cea mai simpl operaie (comand) pe care o poate transmite
programatorul ctre o unitate central (care poate fi un microprocesor). Unitatea central
poate recunoate i executa numai instruciunile codificate pentru care a fost construit;
acestea formeaz setul de instruciuni caracteristic unitii centrale.
Un ir de instruciuni, organizate logic dup un algoritm, formeaz un program; prin
intermediul programului, utilizatorul transmite sistemului de calcul o anumit sarcin
privind prelucrarea datelor (task).
Memoria - este un ir finit de locaii numerotate. O locaie este definit de dou entiti
informaionale: coninutul i adresa.
Coninutul este un ir de cifre binare 0 sau 1 (Binary Digit = bit) care poate reprezenta o
dat (un numr sau un caracter n cod binar, o stare, etc.) sau o comand (instruciune).
Numrul de cifre binare dintr-o locaie reprezint dimensiunea locaiei (formatul
memoriei)
Adresa este numrul de ordine al unei locaii de memorie; adresa permite identificarea
fiecrei locaii n irul ordonat de locaii ce alctuiesc memoria unui sistem de calcul.
Structura memoriei organizat pe locaii, cu delimitarea anumitor zone este numit
"harta memoriei". Se pot evidenia dou astfel de zone:
- Memoria de date (locaiile conin "date");
- Memoria de programe (locaiile conin instruciuni codificate).
Memoria sistemului este organizat sub forma unei matrice, cu liniile avnd un numr de
celule (bii), egal cu cel al cuvntului de instruciune sau de date, fiecrei linii i
corespunde, n mod unic, o adres proprie. Selectarea unei astfel de celule permite accesul
de la microprocesor la aceast celul de memorie sau nsens invers, sensul transferului de
informaie fiind indicat de unitatea de comand i control.

SISTEME CU MICROPROCESOARE
15
1. Concepte generale privind microprocesoarele
Apariia unei operaii cu memoria de la o anumit adres va determina activarea tuturor
celulelor de memorie elementare de la adresa respectiv (de pe linia cu aceeai adres). Prin
intermediul semnalului R/W (citete/scrie), unitatea de comand i control va indica operaia
ce se execut, deci sensul fluxului de informaie (de la microprocesor la memorie, pentru
operaie de scriere, sau de la memorie la microprocesor, pentru o operaie de citire).
Microprocesorul poate conine pe cip att memorie ROM (eventual programe), ct i
memorie RAM (de uz general, sau, sub denumirea de registre, celule cu destinaie special n
memorarea, decodificarea i executarea instruciunilor, a operaiilor aritmetice si logice etc.).
O memorie ROM poate fi doar citit; informaia din ea este permanent i nu dispare la
ncetarea alimentarii calculatorului. Memoria RAM permite scrierea i citirea informaiilor.
Ea este o memorie volatil (se pierde informaia din ea, prin oprirea alimentarii circuitului).
Magistrala - reprezint legaturi multiple i complexe ntrediferitele pri funcionale ale
microprocesorului.
Magistralele conecteaz semnalele de date, adrese, control, ale unei seciuni, cu
semnalele omologe ale celorlalte seciuni, constituind calea de legtura dintre ele.
Exista dou seturi de magistrale n orice sistem microprocesor:
magistrale interne (reprezentnd canalele de legtura ntre diversele uniti funcionale
din unitatea centrala(CPU) a sistemului);
magistrale externe (reprezentnd caile de comunicaie ntre CPU i componentele
externe acestuia).
Fiecare grup de magistrale poate fi subdivizat n trei categorii, dup tipul informaiei
transferate:
magistrale de adrese;
magistrale de date;
magistrale de control.
O magistral poate avea mai multe linii, permind transferul simultan al unui cuvnt de
informaie (adres sau dat), caz n care magistrala se numete magistral paralel. Exist
deasemenea magistrale seriale, pentru care datele sunt transmise multiplexat n timp (un
cuvnt este transmis bit cu bit, pe aceeai linie), care sunt, in mod evident, mult mai lente
dect magistralele paralele. Practic, toate magistralele interne ale CPU, ct i cele externe care
conecteaz CPU cu memoria, i cu majoritatea interfeelor de intrare/ieire ale sistemului,
sunt organizate ca magistrale paralele. Legaturi seriale se utilizeaz mai ales pentru
transmiterea datelor la/de la echipamente aflate la distan de CPU (terminale, linii telefonice,
etc.).

SISTEME CU MICROPROCESOARE

16
1. Concepte generale privind microprocesoarele
Deoarece unitatea central nu poate alimenta simultan un numr prea mare de circuite
exterioare (exist valori limitate ale curenilor pe care acesta i suport sau genereaz), este
necesar amplificarea semnalelor de pe magistralele sistemului. Aceasta adaptare a
semnalelor este efectuat cu diferite tipuri de circuite, distingndu-se n esen urmtoarele:
circuite tampon amplificatoare de magistrala (drivere);
circuite tampon bidirecionale (buffere bidirecionale);
circuite pentru reinerea datelor (latch).

Magistrala de date este destinat att transferului unidirecional de instruciuni de la
memorie (citire a programului), ct i celui bidirecional, de date ntre memorie, unitatea
central i/sau interfeele de intrri/ieiri (informaia parcurge magistrala n ambele sensuri,
sau de la procesor la una dintre unitile externe acestei uniti, sau de la una dintre aceste
uniti spre procesor). Direcia transferului de informaie este supervizat de ctre unitatea de
comand i control a microprocesorului, prin generarea de semnale specifice (citire sau
scriere). Lungimea cuvntului microprocesorului determin numrul de linii de conexiune din
magistrala de date (8, 16, 32, etc.).

Magistrala de adrese este o magistral unidirecionala. Ea vehiculeaz codul binar
reprezentnd locaia (adresa) datei ce se va utiliza n cadrul operaiei ce se execut. Astfel, ea
poate selecta adresa celulei de memorie de la care se citete o noua instruciune sau dat, sau
la care se memoreaz un rezultat. Multe microprocesoare utilizeaz magistrala de adrese i
pentru configurarea adresei echipamentului de intrare - ieire, selectat la o operaie de INPUT
sau OUTPUT. Este sarcina unitii de comand i control de a delimita i indica, prin
generarea de semnale de control specifice, dac este vorba de o operaie de citire sau scriere
din memorie sau intrare - ieire.
Adresabilitatea unui microprocesor este dat de numrul de bii ai magistralei de adrese.
Un numr uzual de 65536 (64 ko) celule de memorie vor necesita 16 linii de adres pe aceast
magistral. (2
16
=65536). n general, se vor putea adresa 2
N
celule de memorie prin intermediul
a N linii de adres.

Magistrala de control furnizeaz informaii suplimentare necesare pentru indicarea
operaiei ce se efectueaz. Numrul de semnale de pe aceasta magistral depinde de numrul
de semnale de control necesare pentru microprocesorul utilizat. Tipice sunt semnalul de ceas
al sistemului (care asigur funcionarea secveniala cu o periodicitate fix a ntregului sistem
microprocesor), semnalele de citire/scriere n memorie, citire/scriere pentru intrare/ieire din
sistem etc.

SISTEME CU MICROPROCESOARE
17
1. Concepte generale privind microprocesoarele
Corelate cu magistrala de adrese, semnalele de pe magistrala de control permit selecia
unic a echipamentului sau a celulei de memorie creia/de la care, prin intermediul
magistralei de date, se transmite/preia informaia, conform operaiei ce se execut.
Conectarea pe liniile magistralelor, n sensul transferului de informaie pe magistral,
este efectuat prin circuitele tampon respective, care sunt selectate (deschise) doar n cazul
adresrii circuitului respectiv.
























De reinut !
Microprocesor - este un circuit integrat VLSI complex care poate
efectua operaii aritmetice i logice sub controlul unui program memorat,
fiind definit ca unitatea central a unui calculator.
Reprezentarea informaiei se face prin cuvinte de instruciuni i
respectiv cuvinte de date.
Fiecare instruciune din programul microprocesorului va fi format din
unul sau mai multe cuvinte de instruciune. Acestea "spun" procesorului
ce are de fcut. Cuvntul de instruciune const din doua pri:
codul operaiei (care indic ce operaie se va executa);
operanzii (care indic asupra cui se va efectua operaia coninut n
codul operaiei).
Instruciunile sunt memorate n ordinea executrii, iar microprocesorul
le citete i le execut secvenial. n esen, se citete un cuvnt de
instruciune, se decodific, obinndu-se operanzii, locaia lor i se
execut operaia indicat. Apoi se trece la o nou instruciune etc.
Un ir de instruciuni, organizate logic dup un algoritm, formeaz un
program; prin intermediul programului, utilizatorul transmite sistemului
de calcul o anumit sarcin privind prelucrarea datelor (task).
Fiecare cuvnt de instruciune sau date are asociat, n mod unic, un
numr care reprezint adresa sa.
A citi o anumita instruciune sau data din memorie va nsemna, n mod
practic, a se activa, prin intermediul funciilor de control, acea celula de
memorie, a crei adres este cea dorit.
Magistralele reprezint legaturi multiple i complexe ntrediferitele pri
funcionale ale microprocesorului.


SISTEME CU MICROPROCESOARE

18
1. Concepte generale privind microprocesoarele

1.2. Arhitecturile von Neumann i Harvard
Modul de conectare i funcionarea componentelor de baz ale unui sistem de calcul, s-au
bazat i se bazeaz nc, n marea majoritate a structurilor utilizate, pe aa numita arhitectura
de tip von Neumann utilizat practic n exclusivitate la realizarea microprocesoarelor uzuale
(Fig.1.1).








Configuraiile numerice ce folosesc microprocesoare realizate utiliznd structura
corespunztoare arhitecturii von Neumann nu fac distincie ntre memoria pentru program i
cea pentru date, structura de memorie fiind exterioar microprocesorului i accesat prin
magistrale unice de adrese i date, multiplexate sau nu. n aceast arhitectur unitatea
aritmetic i logic va executa cte o singur instruciune la un moment dat, ntr-o secven de
program. Dei mai lent dect n sistemele n care se execut mai multe instruciuni deodat
(procesare paralel) arhitectura von Neumann este mai simplu de implementat.
Arhitecturile recentelor tipuri de microprocesoare au elemente de prelucrare paralel, ca
i n cazul procesoarelor numerice de semnal DSP (Digital Signal Processors), conform cu
aa numita arhitectur Harvard care prezint seciuni de memorie diferite pentru program i
date i deci implicit magistrale de date i adrese separate pentru fiecare seciune (Fig.1.2).








Arhitectura Harvard permite o paralelizare complet a lanului de citire/decodificare
instruciuni respectiv efectuare operaii de calcul i transfer al datelor n sistem. Acest mod de
Logica de
control

Unitate
control

Memorie
Program
Unitatea aritmetic
i logic (ALU)

Unitate intrare/ieire
(I/O)

Memorie
Date
Fig. 1.2. Arhitectura Harvard

Unitatea aritmetic
i logic (ALU)

Logica de
control

Unitate
control

Unitate intrare/ieire
(I/O)

Memorie
Program
i Date
Fig. 1.1. Arhitectura Von Neumann


SISTEME CU MICROPROCESOARE
19
1. Concepte generale privind microprocesoarele
operare (tip pipeline) conduce la creteri sensibile ale performanelor (viteza de procesare)
respectivelor sisteme, fa de cele clasice, realizate n arhitectur von Neumann.






















1.3. Arhitectura de baz a unui microprocesor
1.3.1. Structura standard a microprocesorului

Dei exist o mare varietate de microprocesoare, produse de diferite firme, cu multe
deosebiri n structura i tehnologia lor de fabricaie, toate au o schem structural comun,
rezultat din operaiile de baz pe care le efectueaz. Caracteristicile structurale i funcionale
comune rezult din filosofia proiectrii microprocesoarelor, ca instrumente complexe pentru
De reinut !
Arhitectura de tip von Neuman, conine o singur memorie i o singur
magistral pentru transferul datelor din i dinspre unitatea central de
procesare.
Magistrala unic de date i instruciuni este numit magistral
bidirecional i ea ofer anumite avantaje sistemului, din punctul de
vedere al flexibilitii modului de lucru cu exteriorul. Cteva din aceste
avantaje ale unei magistrale unice de date i instruciuni sunt:
se folosete o memorie unic pentru stocarea datelor i instruciunilor
(memoria principal, extern procesorului). Rezult simplificarea
UCP din punctul de vedere al automatului de adresare a memoriei i
al numrului de registre implicate.
folosirea unei memorii unice, unde se stocheaz att date ct i
instruciuni crete flexibilitatea sistemului, pentru c nu exist
restricii privind adresele de stocare a datelor i instruciunilor n
memoria principal.
Acest mod de organizare are i dezavantaje, din punctul de vedere al
vitezei de lucru i din punctul de vedere al unei relative creteri n
complexitate a unitii de control, care trebuie s interpreteze n mod
corect cuvintele citite din memorie ca fiind date, sau instruciuni.
Arhitectura Harvard prezint memorii separate de date i program i
deci implicit magistrale de date i adrese separate pentru fiecare tip de
memorie oferind vitez crescut.


SISTEME CU MICROPROCESOARE

20
1. Concepte generale privind microprocesoarele
realizarea unor sisteme numerice flexibile, rapide, puternice i la un pre de cost deosebit de
avantajos.
Arhitectura standard a unui microprocesor (Fig.1.3) are blocurile componente:
unitatea aritmetic i logic (ALU);
unitatea de comand i control;
grupul de registre.
Blocurile componente sunt conectate ntre ele i nspre/dinspre exterior prin intermediul
magistralelor de date i de adrese iar accesul la magistrale este realizat de semnalele de
control generate de unitatea de comand i control.

























Fig. 1.3. Arhitectura standard a unui microprocesor
Adres
operand
Registre generale
Mag. intern date n-bii
Unitatea
aritmetic
i
logic
(ALU)
Registru
acumulator
Unitatea de comand i
control
Decodificatorul
instruciunii (ID)
Registrul de
instruciuni (IR)
Mag. intern adrese m-bii
TACT
Numrtor de
adrese (PC)
...
.
.
.
n-bii
OPCODE
Registrul I/O
m-bii
Registrul adrese
Magistral
extern
de date
Magistral
extern
de adrese
Memorie
de
instructiuni
(ROM)
Memorie
de
date
(RAM)
Registrul indicatori
de condiii
Microprocesor

SISTEME CU MICROPROCESOARE
21
1. Concepte generale privind microprocesoarele













1.3.2. Unitatea aritmetic i logic (ALU)

Unitatea aritmetic i logic care proceseaz informaia realiznd operaii aritmetice i
logice, fiind un circuit combinaional, prezint dou intrri i o ieire necesitnd att pentru
cuvintele de intrare, ct i pentru cele de ieire registre de memorare temporar. Unul din
cuvintele de intrare este preluat de pe magistrala intern de date a microprocesorului unde a
fost depus de ctre un alt registru sau a fost adus din memoria extern, iar cellalt cuvnt de
intrare se afl ntr-un registru numit registru acumulator, cuvntul rezultat n urma procesrii
va fi ncrcat tot n registrul acumulator, deci registrul acumulator conine unul din operanzi
nainte de procesare, precum i rezultatul n urma procesrii.
Comenzile necesare procesrii, de exemplu: ncrcarea celor doi operanzi,
executarea operaiei i ncrcarea acumulatorului cu rezultatul procesrii
sunt primite de la unitatea de comand i control.








De reinut !
Microprocesorul opereaz n mod secvenial, determinat de ctre un
program memorat, format din instruciuni.
Majoritatea modelelor de microprocesoare au circuitele logice interne
mprite n cinci pri componente principale: unitatea de control;
unitatea aritmetic i logic (ALU); unitatea de intrare/ieire (I/O);
memorie intern / registre; magistrale. Uneori, primele dou sunt apelate
mpreun sub numele unitate central de prelucrare, dei acelai termen
este folosit adeseori ca sinonim al ntregului procesor. Toate cele cinci
pri ale microprocesorului interacioneaz, unitatea de intrare/ieire se
afl sub controlul unitii de control, iar operaiile unitii de control pot
fi determinate de rezultatele calculelor executate de ALU
De reinut !
Unitatea aritmetic i logic execut prelucrarea datelor realiznd
urmtoarele funcii:
funcii aritmetice: adunare, scdere, nmulire, mprire;
funcii logice: SI, SAU, SAU EXCLUSIV, NU i complement.
Fiecare funcie este activat de o instruciune corespunztoare care
furnizeaz i operanzii implicai n operaie.

SISTEME CU MICROPROCESOARE

22
1. Concepte generale privind microprocesoarele

1.3.3. Unitatea de comand i control
Coordoneaz funcionarea tuturor unitilor interne pentru execuia operaiilor coninute
n mod codificat n instruciuni.
Funciile unitii de comand sunt:
Extragerea instruciunii din memoria extern.
Se ''citeste'' instruciunea din zona care conine programul aflat n execuie. Instruciunea
are dou zone de informaie:
zona de cod, care conine operaia caracteristic instruciunii;
zona de date (adres operanzi).
Decodificarea instruciunii.
Fiecare instruciune are ca efect o succesiune specific de operaii elementare, numite
microoperaii. Secvena de microoperaii este generate de unitatea de comand pe baza
codului instruciunii; determinarea acestei secvene n funcie de cod, este numit
''decodificare''.
Execuia propriu-zis const n activarea succesiv a unitilor interne pentru efectuarea
operaiilor din secvena corespunztoare instruciunii.
Codul instruciunii permite obinerea tuturor informaiilor necesare execuiei operaiilor
impuse de instruciune:
numrul de octei din formatul instruciunii;
tipul operaiei principale (adunare, scdere, transfer, salt etc.);
numrul operanzilor implicai n operaie;
adresa fiecrui operand ( dac este operand aflat temporar ntr-un registru intern, se
specific acest registru; dac este operand n memorie, se specific adresa sau cum se
obine adresa lui).
Fiecare instruciune corespunde unei operaii fundamentale, care, n general se
realizeaz n mai multe etape (Fig.1.4).
Execuia unei instruciuni este un ir de operaii elementare:
starea - corespunde unei perioade de tact (T) i este durata unei operaii elementare
(de exemplu, incrementarea unui registru);
ciclul main - conine 35 stri i corespunde unei etape din execuia unei
instruciuni (de exemplu, citirea unei locaii de memorie, transferul de date ntre un
registru intern i o locaie de memorie etc.); o instruciune conine 1 - 5 cicluri main,
dintre care primul ciclu main este de citire memorie (citirea codului instr.).


SISTEME CU MICROPROCESOARE
23
1. Concepte generale privind microprocesoarele










n desfurarea n timp a unei instruciuni, unitatea de comand i control selecteaz i
adreseaz unitile interne ale microprocesorului care realizeaz funcii specifice rolului lor.
Realizarea concret a unitii de comand i control este specific fiecrui
tip de microprocesor i determin multe din performanele sale.
Ca structur, unitatea de comand i control este un automat secvenial cu
numr finit de stri, care funcioneaz pe baza unui microprogram introdus
n procesul de fabricaie. Acest microprogram nu poate fi modificat de
utilizator i corespunde setului de instruciuni, fiind un interpretor de
instruciuni. De aceea, setul de instruciuni este fix pentru fiecare tip de
microprocesor.














T
Fig. 1.4. Diagramele de timp pentru semnalul de tact i ciclu main
De reinut !
Unitatea de control este cea care supervizeaz funcionarea corect a
ansamblului de elemente unite n structura microprocesorului n corelaie
cu restul microsistemului. Comenzile generate de unitatea de control
rezult n urma decodificrii instruciunii, a cererilor de ntrerupere
primite de la elementele microsistemului i a impulsurilor de tact. n
general, unitatea de control este implementat prin microprograme, adic
algoritmul de funcionare este nscris ca o succesiune de cuvinte ntr-o
memorie ROM (Read Only Memory).
Pe msur ce complexitatea microprocesoarelor a crescut, unitatea de
control a devenit tot mai sofisticat.


SISTEME CU MICROPROCESOARE

24
1. Concepte generale privind microprocesoarele


1.3.4. Grupul de registre
n componena microprocesorului se pot considera dou categorii de registre:
registre speciale;
registre de uz general.
Registrele speciale numite i registre de lucru, sau registre interne ale
microprocesorului, au funcii predefinite specifice n funcionarea acestuia. Dei uneori pot fi
setate la valori iniiale specificate, aceste registre nu sunt accesibile prin program, la execuia
instruciunilor. n aceast categorie sunt: registrul acumulator, registrul numrtor de adrese
al programului, registrul indicatorilor de condiii, registrul de instruciuni, registrul de
adresare a memoriei i registrul de intrare/ieire.

Registrul acumulator A(Acumulator). Acumulatorul este registrul cel mai
frecvent utilizat, fiind conectat la magistrala intern de date i la unitatea aritmetic
i logic. Cnd se prelucreaz dou cuvinte, la nceput un cuvnt se afl n
acumulator, iar dup prelucrare rezultatul dintre cele dou cuvinte este trecut din
unitatea aritmetic i logic tot n acumulator. De asemenea registrul acumulator
particip la transferul informaiei ntre o surs (locaie de memorie, port de
intrare/ieire-I/O) i o destinaie (locaie de memorie, port de intrare/ieire-I/O).
Transferul are loc n dou etape: cuvntul de la surs este deplasat n acumulator iar
apoi din acumulator este deplasat la destinaie. Numrul de celule ale acumulatorului
este egal cu lungimea cuvntului prelucrat de microprocesor care n cazul structurii
prezentate este n. Exist structuri de microprocesoare care pot conine mai multe
acumulatoare, existnd i instruciuni diferite pentru fiecare din acumulatoare, iar
acumulatoarele pot fi considerate i mpreun pentru a se putea lucra cu cuvinte de
lungime multiplu de n-bii. Avantajul mai multor acumulatoare rezult din
posibilitatea de a lucra acumulator la acumulator.

Registrul numrtor de adrese al programului - PC (Program Counter). Programul
ce const din succesiunea de instruciuni ce trebuie executate de microprocesor este
nscris n locaii de adrese succesive ale unei memorii externe. Adresa locaiei ce
conine instruciunea care trebuie adus din memoria extern este nscris n registrul
numrtor de adrese al programului. Coninutul de m-bii al numrtorului de adrese
este automat mrit cu o unitate dup ce instruciunea a fost adus din memorie,
pregtindu-se astfel adresa pentru instruciunea urmtoare. Numrtorul de adrese

SISTEME CU MICROPROCESOARE
25
1. Concepte generale privind microprocesoarele
este un numrtor cu prescriere, rezult c se pot introduce i alte valori dect cele
ale numrrii n ordine natural, deci se pot efectua salturi n citirea locaiilor
memoriei. Prin comanda de RESET (iniializare) aplicat microprocesorului la
punerea n funciune dup conectarea tensiunii sau se aplic din exterior, numrtorul
este ncrcat cu o adres fixat de ctre productor 0000.
Registrul indicatorilor de condiii - F(Flag). Reprezint un grup de bistabile
(fanioane, stegulee) asamblate sub forma unui registru i citite simultan vor genera,
mpreun cu coninutul acumulatorului, cuvntul de stare al programului PSW
(Program Status Word). Din starea biilor registrului F se poate afla dac rezultatul
operaiei efectuate este 0 sau nu, dac el este un numr pozitiv sau negativ, dac
numrul biilor din rezultat ce au valoarea 1 este un numr par sau impar etc.
Semnificaia principalilor bii indicatori de condiii (de stare) ntlnii la majoritatea
microprocesoarelor este:
- Carry (CF), Indicatorul de transport: este utilizat pentru a indica depirea
preciziei de lucru a microprocesorului, n urma efecturii unei operaii aritmetice
(de exemplu, adunarea a dou numere a cror sum depete dimensiunea
cuvntului de date al procesorului). Rezultatul se va memora n aceste cazuri n
acumulator, cu excepia bitului cel mai semnificativ, memorat in indicatorul de
transport (carry), utilizat astfel ca o extensie a acumulatorului. Acest bit poate fi
astfel ulterior testat, sau utilizat n operaii ulterioare ale ALU. Avem:
CF = 1, dac rezultatul ultimei operaii n ALU a generat transport;
CF= 0, dac rezultatul ultimei operaii n ALU nu a generat transport.
Carry poate fi iniializat uzual (0 sau 1), prin instruciuni specifice ale
microprocesorului. Valoarea sa se va modifica ns, n cursul efecturii de operaii
n ALU.
- Zero (ZF), Indicatorul de zero: este utilizat pentru a indica faptul c rezultatul
unei operaii aritmetice sau logice a fost 0 sau nu. Acest bit nu poate fi iniializat
direct printr-o instruciune specific. Avem:
ZF = 1, dac s-a obinut rezultat nul la ultima operaie aritmetic sau logic;
ZF = 0, dac nu s-a obinut rezultat nul la ultima operaie aritmetic sau logic.
- Paritate (PF, Indicatorul de paritate: este utilizat pentru a indica tipul sumei
modulo 2 a rezultatului ultimei operaii efectuate n ALU. Astfel:
PF = 0, dac rezultatul are un numr impar de bii cu valoarea 1;
PF = 1, dac rezultatul are un numr par de bii cu valoarea 1.

SISTEME CU MICROPROCESOARE

26
1. Concepte generale privind microprocesoarele
Acest bit este uzual testat n cadrul programelor de verificare a corectitudinii
informaiilor codificate, sau la transmisii de date.
- Semn (SF), Indicatorul de semn: este utilizat pentru a indica semnul rezultatului
unei operaii efectuate n ALU. Astfel:
SF = 0, dac s-a obinut un rezultat pozitiv (sau zero);
SF = 1, dac s-a obinut un rezultat negativ.
Semnul rezultatului este decis n funcie de valoarea celui mai semnificativ bit al
sau, considerat ca bit de semn, numerele fiind tratate ca numere reprezentate n
complement fa de doi.
Se pot aduga i ali bii de condiie care s reflecte dac anumite funciuni
sau stri hardware ale microprocesorului sunt ndeplinite sau nu, iar unele
microprocesoare posed instruciuni ce pot nscrie anumii bii de condiie.

Registrul de instruciuni - IR (Instruction Register). Dup ce un cuvnt instruciune
este adus din memorie prin registrul I/O pe magistrala intern de date a
microprocesorului, acesta va fi nscris n registrul de instruciuni care pstreaz
instruciunea pe durata executrii acesteia. Instruciunea este divizat este divizat n
dou cmpuri: cmpul codului operaiei OPCODE i cmpul operandului (adresa
operandului). Biii din codul operaiei se aplic decodificatorului instruciunii care,
apoi prin unitatea de control, va genera toate semnalele de control necesare execuiei
instruciunii reprezentat de codul operaiei. Cmpul adresa operandului se aplic
registrului de adres pentru a forma adresa din memorie unde se afl operandul
necesar operaiei specificate de OPCODE.

Registrul de adresare a memoriei. Este conectat la magistrala extern de adresare a
memoriei care transfer coninutul registrului numrtor de adrese ce conine un
cuvnt binar de m bii i care reprezint adresa unei locaii de memorie sau adresa unui
port I/O. ncrcarea registrului de adrese se poate face nu numai de la numrtorul de
adrese ci i de la alte elemente ale microprocesorului, rezultnd c pe magistrala de
adrese se pot aplica i cuvinte de adres diferite de coninutul registrului numrtor de
adres.

Registrul de intrare/ieire. Realizeaz legtura ntre magistrala de date interioar a
microprocesorului i magistrala de date exterioar, deci vehiculeaz cuvintele de date
i instruciuni.


SISTEME CU MICROPROCESOARE
27
1. Concepte generale privind microprocesoarele
Registrele de uz general sunt adresabile de ctre utilizator, i pot fi folosite pentru
stocarea i manevrarea datelor programului - operanzi, date, adrese de memorie coninnd
date utile programului, etc. Uzual, aceste registre conin informaiile cele mai utilizate de
ctre program. Aceasta conduce la o sporire a vitezei de lucru globale a sistemului, deoarece
timpii de acces la registrele interne sunt sensibil mai redui dect timpii de acces la memoria
externa a sistemului. Aceste registre sunt conectate att la alte registre interne ale
microprocesorului, ct i la magistralele externe, prin intermediul magistralelor interne i al
circuitelor tampon.
n cazul cel mai general microprocesorul poate conine, att memorie ROM
i RAM, pe lng, registre (fizic tot memorie RAM). Registrele alctuiesc un
element cu totul aparte fa de memorie, din punctul de vedere al
programrii microprocesorului. Astfel, datele memorate de ctre registre
pot fi manipulate, modificate, operate n ALU, prin instruciuni specifice de
operare cu registrele, sau coordonat de ctre seciunea de CONTROL.
Totodat, aceste instruciuni sunt cele mai rapide. O operaie tipic cu un
registru dureaz cteva zeci de nanosecunde, fa de sute de nanosecunde
necesare atunci cnd se opereaz cu memoria extern.

















De reinut !
Se pot considera dou categorii de registre ale unui microprocesor:
registre speciale au funcii predefinite specifice n funcionarea
microprocesorului; aceste registre nu sunt accesibile prin program, la
execuia instruciunilor.
registre de uz general sunt utilizate pentru manipularea i memorarea
temporar a datelor. n general, orice registru de acest tip este
accesibil programatorului, prin instruciuni specifice, fiind posibile:
- ncrcarea cu un cuvnt dorit de date, deplasarea informaiei ntre
registre, sau ntre registre i memorie, rotirea coninutului
acestora;
- tratarea unei perechi de registre ca reprezentnd date pe cuvinte
cu lungime dubl (la registre de 8 bii, perechi de 16 bii) i
posibilitatea operrii cu acestea.


SISTEME CU MICROPROCESOARE

28
1. Concepte generale privind microprocesoarele


1.4. Principiu de funcionare al microprocesorului
La un moment dat numrtorul de adrese PC conine adresa la care n memorie se afl
instruciunea ce trebuie s fie executat. Acest cuvnt de adres este pus pe magistrala de
adrese i aplicat memoriei de programe care trimite instruciunea n registrul de instruciuni i
n acelai timp unitatea de control incrementeaz numrtorul de adrese pentru instruciunea
urmtoare. Exist i anumite instruciuni de salt care modific ordinea de numrare natural
din numrtorul de adrese caz n care se prescrie adresa la care se face saltul pentru
instruciunea urmtoare de executat.
Execuia unei instruciuni (ciclu instruciune) se descompune n:
etapa de aducere a instruciunii din memorie (fetch) identic ca procedur pentru orice
instruciune;
etapa de execuie a instruciunii care necesit un timp variabil n funcie de complexitatea
instruciunii.
Bii din cmpul de cod al instruciunii (operaiei) denumit OPCODE se aplic
decodificatorului de instruciuni - ID (Instruction Decoder) care, prin unitatea de control, va
genera semnalele de control asociate execuiei operaiei respective.
Cmpul cu adresa operandului este aplicat registrului de adrese pentru localizarea
adresei din memorie de unde trebuie luat operandul necesar operaiei n curs de execuie.
n executarea unei instruciuni unitatea de control primete, pe lng ieirile
decodificatorului, la aplicarea cmpului OPCODE, i impulsuri de ceas (tact).
O instruciune este constituit din mai muli octei, ceea ce rezult c desfurarea
ciclului instruciune poate necesita unul sau mai multe apeluri la memorie sau la un dispozitiv
intrare/ieire. Fiecare apel la memorie sau la un dispozitiv intrare/ieire al unei instruciuni
definete un interval de timp numit ciclu main (Machine Cycle), deci un ciclu instruciune
cuprinde unul sau mai multe cicluri main. Fiecare ciclu main se desfoar n mai multe
perioade de tact, o perioad constituind o stare (State).
Impulsurile de tact care sincronizeaz activitatea unitii de comand i control sunt
generate de un circuit specializat inclus sau nu n microprocesor numit generator de tact
(Clock Driver).
Unitatea de comand i control genereaz la rndul ei un semnal de sincronizare
(SYNCRO) corelat cu tactul sistem, care permite sincronizarea blocurilor exterioare
microprocesorului (memorie, periferice) cu etapele consecutive din derularea unei
instruciuni. Cunoscnd numrul de stri necesare acesteia i frecvena tactului se poate

SISTEME CU MICROPROCESOARE
29
1. Concepte generale privind microprocesoarele
determina durata n uniti de timp a realizrii instruciunii respective.
Pentru scurtarea timpului de realizare a instruciunii, ciclurile instruciune se suprapun.
Deoarece etapele de transfer pentru fetch i pentru execuie nu se suprapun se poate realiza n
paralel (pipeline) executarea instruciunii curente cu aducerea instruciunii urmtoare. Aceast
metod (tip conduct) este curent folosit la microprocesoarele moderne de mare vitez
extinzndu-se paralelismul la grupuri de instruciuni care sunt aduse, n timp ce alte grupuri
sunt executate.



























Test de autoevaluare
1. Ce este hardware-ul? Dar software-ul?
2. Ce este microprocesorul? Dar microcalculatorul?
3. Ce nseamn memoria i care sunt tipurile de memorie dintr-un
sistem cu microprocesor?
Lucrare de laborator
Lucrarea aferent acestei uniti de nvare se intituleaz
INTRODUCERE N SISTEME CU MICROPROCESOARE
Descriere i funcionare - Hardware.
Obiectivele laboratorului sunt:
S cunoasc resursele hardware ale microsistemului;
S neleag modul de lucru cu microsistemul;
S nvee s foloseasc microsistemul pentru a realiza programe de
operare cu acesta.
Studenii utilizeaz un microsistem experimental Sistem cu
Microprocesor 32 bii - modul Z3EV
Microsistemul de nvare cu microprocesor pe 32 bii este un sistem
didactic cu microprocesor, bazat pe procesorul Intel 80386EX, care
acoper toat problematica aprut n timpul studierii sistemelor cu
microprocesor
Microsistemul conine toate componentele tipice necesare studierii unui
astfel de sistem: microprocesor, memorie RAM i EPROM, tastatur i
display cu cristale lichide, interfa paralel i serial, intrri i ieiri
analogice

SISTEME CU MICROPROCESOARE

30
1. Concepte generale privind microprocesoarele


































Rspunsuri i comentarii la ntrebrile din testul de
autoevaluare

Rspunsurile la ntrebrile din testul de evaluare se gsesc n textul
unitii de nvare.
4. Ce nseamn magistral (bus) i care sunt magistralele dintr-un sistem
cu microprocesor?
5. Care sunt componentele principale ale arhitecturii von Neumann?
6. Care sunt componentele principale ale arhitecturii Harvard?
7. Care sunt prile componente ale unui microprocesor?
8. Ce rol are unitatea aritmetic i logic n cadrul unui microprocesor?
9. Ce rol are unitatea de command i control n cadrul unui
microprocesor?
10. Care sunt i ce rol ndeplinesc registrele n cadrul unui
microprocesor?
11. Care sunt indicatorii de condiii ai unui microprocesor?
12. Cum funcioneaz un microprocesor?

Lucrare de verificare la Unitatea de nvare 1
Aceast unitate de nvare se va regsi n lista de subiecte pentru
examen prin urmtoarele subiecte:
1. Definiii i terminologie utilizate n sisteme cu microprocesoare.
2. Arhitecturile von Neumann i Harvard: scheme bloc, principia de
funcionare.
3. Structura standard a microprocesorului: schem bloc, rolul blocurilor
componente.
4. Principiul de funcionare al microprocesorului.


SISTEME CU MICROPROCESOARE
31
1. Concepte generale privind microprocesoarele



















Bibliografie
1. Dobriceanu Mircea; Sisteme cu microprocesoare; Notie de curs,
Tipografia Universitii din Craiova, 2012 i format electronic
postat pe http://www.em.ucv.ro
2. Dobriceanu Mircea; Sisteme de achiziie i microprocesoare,
Editura Universitaria Craiova, 2003, p.304, ISBN 973-8043-289-8

Concluzii
Microprocesoarele reprezint uniti centrale integrate ntr-un singur
circuit integrat pe scar foarte larg (VLSI Very Large Scale
Integration), care au cptat o larg dezvoltare o dat cu dezvoltarea
tehnologiei de integrare i cu rspndirea utilizrii sistemelor cu
microprocesor n cele mai diverse domenii de activitate.

SISTEME CU MICROPROCESOARE

32
2. Microprocesoarele INTEL 80x86: arhitecturi i magistrale

Unitatea de nvare nr. 2




MICROPROCESOARELE INTEL 80x86:
ARHITECTURI I MAGISTRALE




Cuprins Pagina
Obiectivele unitii de nvare nr. 2 34
2.1. Arhitectura INTEL 80x86 34
2.2. Magistrale 40
2.2.1. Aspecte generale 40
2.2.2. Magistrala de date 41
2.2.3. Magistrala de adrese 42
2.2.4. Magistrala de control 43
Lucrare de laborator 44
Test de autoevaluare 45
Lucrare de verificare unitatea de nvare nr. 2 45
Rspunsuri i comentarii la ntrebrile din testul de autoevaluare 45
Concluzii 45
Bibliografie unitatea de nvare nr. 2 46



SISTEME CU MICROPROCESOARE
33
2. Microprocesoarele INTEL 80x86: arhitecturi i magistrale
OBIECTIVELE unitii de nvare nr. 2

Principalele obiective ale Unitii de nvare nr. 2 sunt:












2.1. Arhitectur INTEL 80x86

Microprocesoarele INTEL 80x86 au evoluat continuu (Tab. 2.1), cea ce a dus la apariia
a noi membrii care au contribuit la creterea performanelor hardware i software a acestor
componente. Principalul avantaj al acestor microprocesoare cost n pstrarea compatibilitii
software ntre diferitele generaii ncepnd cu microprocesorul 8086, adic un program scris
pentru o versiune mai veche de procesor se poate executa pe orice versiune ulterioar fr
modificri, ceea ce a permis dezvoltarea continu a aplicaiilor pentru aceste microprocesoare.

Tab.2.1. Evoluia microprocesoarelor INTEL 80x86
Tip Anul
lansrii
Latime
registre
(bii)
Laime
mag. de
date/ad
rese
Spaiu de
adresare
fizic/virt.
Alte caracteristici
4004 1971 4 4 4KB 45 instruciuni, tehnologie PMOS,
primul dispozitiv programabil folosit n
calculatoare
8008 1972 8 8 16KB 45 instruciuni, tehnologie PMOS, lent
8080 1973 8 12 64KB ciclul main 2 microsecunde, 500000
instruciuni-secund, de 10 ori mai rapid
dect 8008, tehnologie NMOS, folosit ca
microprocesor pentru
microcolculatoarele anilor 70, necesit 3
tensiuni de alimentare
8085 1975 8 12 64KB ciclul main,3 microsecunde, 246
instruciuni, doar o surs de alimentare
de 5 V, vndut n 100 mil de exemplare
8086 1978 16 16/20 1Mo primul procesor pe 16 bii, ciclul main
400 nanosecunde, memorie cache pentru
instruciuni 6 octei, mai multe registre
i instruciuni adiionale, 0,33
MIPS(milioane de instruciuni pe
secund), tehnologie 3 microni
Cunoaterea arhitecturilor privind microprocesoarele
80x86;
Cunoaterea i diferenierea magistralelor pentru
microprocesoarele 80x86;


SISTEME CU MICROPROCESOARE

34
2. Microprocesoarele INTEL 80x86: arhitecturi i magistrale
8088 1980 16 8/20 1Mo procesorul folosit pentru primul IBM
PC, memorie cache pentru instruciuni 4
octei
80186 1982 16 16/20 1Mo 8086 cu suport I/O pe cip, conine
hardware de tipul numrtoarelor
programabile, controler de ntreruperi,
etc., nu a fost folosit n PC-uri, ideal
pentru sistemele care necesit minum de
hardware
80286 1983 16 16/24 16Mo procesor pentru IBM-PC,varianta AT,
puine instruciuni pentru accesarea
celor 15 MB suplimentari, ciclul main
n 250 ns, axat pe facilitile
implementrii multiprocesrii
(multitasking), 0,9 MIPS, tehnologie 1,5
microni
80386 1986 32 32/32 4Go/64GB primul procesor pe 32 de biti,
nbuntirea lucrului cu pagini virtuale
de memorie, include circuite pentru
managementul memoriei interne i
suplimentare, paginarea memoriei i
controlul permisiunilor I/O, 5 MIPS,
tehnologie 1 micron
80486 1989 32 32/32 4Go/64GB incorporeaza coprocesorul matematic i
unitatea de management a memoriei,
memorie cache 8KB ncorporat,
aproape jumate din instruciuni pot fi
executate ntr-un ciclu main faa de
dou cicluri la 80386, 20 MIPS,
tehnologie 0,8 microni
80586
Pentium
1992 32 64/32 4Go/64GB arhitectura pipeline superscalara,
versiuni pe 120 i 133 MHz, dou uniti
pentru prelucrarea numerelor ntregi,
memorie cache 16 KB (cte 8 KB pentru
fiecare unitate), 133 MIPS, , tehnologie
0,5 microni
80586
Pentium
Pro
1995 32 64/36 4Go/64GB primul reprezentant al familiei P6
realizeaz execuia dinamic a
instruciunilor, memorie cache L1 - 16
KB (cte 8 KB pentru fiecare unitate),
256 KB memorie cache L2, folosete
trei motoare de execuie, 200 MIPS,
tehnologie 0,35 microni
80686
Pentium
II
1997

32 64/36 4Go/64GB faciliti suplimentare de control al
consumului, memorie cache L1 - 32 KB
(cte 16 KB pentru fiecare unitate), 512
KB memorie cache L2 (133 MHz),
folosit pentru aplicaii de nivel nalt, 400
MIPS, , tehnologie 0,25 microni
80686
Pentium
III
1999 32 64/36 4Go/64GB dou magistrale independente (poate
accesa simultan memoria cache L2 i
memoria), 256 KB memorie cache L2
integrat, frecvena de tact pn la 1GB,
550 MIPS, , tehnologie 0,18 microni

SISTEME CU MICROPROCESOARE
35
2. Microprocesoarele INTEL 80x86: arhitecturi i magistrale
80786
Pentium
IV
(Itanium)
2002 64 64/36 64GB frecvena de tact pn la 3,46GB,
suport Hyper-Threading,
1MB/512KB/256KB L2 memorie cache,
specializat pentru sreaming video, jocuri
i aplicaii DVD, 1500000 MIPS,
tehnologie 0,18 microni
80886
Pentium
IV
(Nortwoo
d)
2004 64 64/36 125000000 MIPS, tehnologie 0,13
microni, tehnologia pipeline, frecven
de lucru foarte mare, SSE3, design
VLIW cu emulator x86 , controler de
memorie on-die
80886
Core 2
2006 64 64/40 1-4 nuclee, +125000000 MIPS,
tehnologie 0,09-0,065 microni, 2x1-
4MB memorie cache L2, frecven 2,66-
3,6 GHz, cu 33% mai multe instruciuni
pe ciclu la aceeai frecven, mai multe
instruciuni executate simultan, controlul
consumului, advanced smart cache,
smart memory acces, advanced digital
media boost,
80986
Dual Core
2007 64 64/48 +125000000 MIPS, tehnologie 0,045
microni, mnemorie cache 2-6MB, 3-4
MB L3 cache, structur monolitic
quad-core, SSE4a, HyperTransport 3
sau QuickPath, controler memorie
integrat, on-die L3 cache
I5 2008 64 64/48 3-8MB L3 cache, 2sau 4 nuclee, Out-of-
order (executarea intruciunilor ntr-o
ordine dictat de introducerea datelor,
care duce la creterea vitezei),
superscalar, 64-bit (integer
CPU), hardware-based encryption,
consumredus de energie,
adaptive power management
I7 2009 64 64/48 3-8MB L3 cache, 2, 4 sau 6 nuclee,
tehnologie 0,045sau 0,032 microni,
magistrale QPI 3xDDR3, DMI, FDI,
PCI-e 2xDDR3
Sandy
Bridge
2011 64 64/48 3-17 MB cache (i3-i7), Direct Media
Interface, integrated GPU, 2-6 nuclee,
design modular
Intel
Larabee
2013 Very wide vector unit, instruciuni
LRBni (864-bit)
Intel
Haswell
2014 FMA3 instructions, DDR4

Compatibilitatea software ntre diferitele generaii este necesar din mai multe
considerente:
programele scrise pentru o anumit versiune de procesor pot fi reutilizate pentru versiunile
mai noi; firmele de software pot s investeasca mai mult pentru dezvoltarea unui program,
bazndu-se pe pstrarea compatibilitii;

SISTEME CU MICROPROCESOARE

36
2. Microprocesoarele INTEL 80x86: arhitecturi i magistrale
programatorii sunt familiarizai cu o structur hardware relativ stabil; modificrile
hardware se menin pe ct posibil transparente pentru programatori i vizeaz mai ales
aspecte de performa (ex: execuia mai rapid a instruciunilor).

Se prezint arhitectura de baz a familiei de microprocesoare Intel 80x86 (Fig.2.1),
procesorul I8086 (primul lansat din familie) care conine dou uniti funcionale autonome:
unitatea de execuie (EU Execution Unit) care efectueaz execuia instruciunilor;
unitatea de interfa cu magistralele externe (BIU Bus Interface Unit) extrage
instruciunile, citete operanzii i scrie rezultatele n memorie.



























Unitatea de interfa cu magistralele (BIU) realizeaz conectarea microprocesorului cu
exteriorul prin intermediul magistralelor de adrese (20 de linii) i de date (16 linii). De
asemenea, unitatea de interfa genereaz semnalele de comand pentru realizarea
operaiile de citire i scriere cu memoria sau cu porturile. Unitatea de interfa realizeaz
extragerea n avans a instruciunilor din memorie, pe care le stocheaz ntr-un fiier de
instruciuni care este de fapt o list de tip FIFO (First In First Out). Dac n acest fiier sunt
cel puin dou locaii libere i unitatea de execuie nu solicit transfer de operanzi cu
Unitatea de execuie (EU) Unitatea de interfa (BIU)
Fig. 2.1. Arhitectura microprocesorului INTEL 8086

SISTEME CU MICROPROCESOARE
37
2. Microprocesoarele INTEL 80x86: arhitecturi i magistrale
exteriorul, unitatea de interfa va iniia un ciclu main de extragere n avans a unei
instruciuni din memorie, de la adresa urmtoare. Se asigur astfel un important ctig de
timp, prin suprapunerea execuiei cu extragerea instruciunilor, operaie care necesit timp
de acces la memorie i timp de transfer. Instruciunile de salt pot modifica succesiunea
normal prin comutarea execuiei la o adres ''de salt''; n aceast situaie, unitatea de
interfa iniializeaz fiierul prin tergerea instruciunilor existente i ncrcarea lui cu o
nou secven de instruciuni extrase ncepnd cu adresa de salt. Dac n timpul execuiei
unei instruciuni unitatea EU solicit un operand din memorie, unitatea de interfa
calculeaz adresa fizic (20 de bii) n funcie de modul de adresare comandat, utiliznd
registrele proprii i unitatea aritmetic proprie i genereaz semnalele de comand pentru
transferul operandului ctre unitatea de execuie.
Unitatea de execuie (EU) extrage succesiv instruciunile din registrul de instruciuni, le
decodific pe baza unui microprogram rezident i le execut prin intermediul registrelor de
uz general i unitii aritmetice si logice. Dac pentru execuia unei instruciuni este
necesar accesul la memorie sau la porturi I/O, unitatea de execuie transmite ctre unitatea
de interfa o adres de 16 bii (adres efectiv sau offset) ce va fi utilizat pentru operaiile
de transfer. Unitatea de execuie dispune de un bloc de comand care coordoneaz
funcionarea unitii. n acest bloc exist o memorie ROM n care este stocat microcodul
de interpretare i execuie pentru fiecare instruciune.

Ulterior funcionalitatea unitilor EU i BIU a fost divizat pe mai multe uniti i s-au
adugat altele ca de exemplu: unitatea de decodificare a instruciunilor, unitatea de
segmentare i de paginare, unitatea de management a memoriei cache i procesorul de virgul
flotant (Fig.2.2).
Procesorul 80386 a fost primul din cadrul familiei 80x86 care a utilizat o form de
prelucrare paralel. Arhitectura acestui procesor cuprinde un numr de ase uniti care
funcioneaz n paralel. Acestea sunt urmtoarele:
Unitatea de interfa cu magistrala, care realizeaz accesul la memorie i la dispozitivele de
I/E;
Unitatea de ncrcare a instruciunilor, care primete codul instruciunilor de la unitatea de
interfa cu magistrala i le depune ntr-o coad de 16 octei;
Unitatea de decodificare a instruciunilor, care decodific codul obiect al instruciunilor i
genereaz un microcod pentru execuia acestora;
Unitatea de execuie, care execut microcodul corespunztor fiecrei instruciuni;

SISTEME CU MICROPROCESOARE

38
2. Microprocesoarele INTEL 80x86: arhitecturi i magistrale
Unitatea de segmentare, care translateaz adresele logice n adrese liniare i efectueaz
testele necesare proteciei;
Unitatea de paginare, care translateaz adresele liniare n adrese fizice, efectueaz testele
necesare proteciei paginilor de memorie i conine o memorie cache cu informaii despre
pn la 32 de pagini cel mai recent accesate.

























Structura hardware general a unui sistem cu microprocesor se bazeaz pe o arhitectur
von Neumann, (Fig. 2.1).








O arhitectur von Neumann are trei componente principale:
unitatea central - CPU (Central Processing Unit) coninnd elementele de calcule
aritmetice, logice i funciile de control;
Fig. 2.1. Structura de principiu a arhitecturii Intel 80x86
CPU
Magistrala sistem
Dispozitive
I/O
Memorie
Fig. 2.2. Arhitectura microprocesorului INTEL 80386


SISTEME CU MICROPROCESOARE
39
2. Microprocesoarele INTEL 80x86: arhitecturi i magistrale
memoria (RAM - pentru citire / scriere, i ROM - doar citire); ;
dispozitivele de intrare/ieire - pentru controlul perifericelor.
Cele trei componente sunt interconectate prin intermediul magistralei de sistem (System Bus).
n cazul arhitecturii von Neumann toate aciunile au loc la nivelul unitii centrale
(CPU), toate calculele se efectueaz aici, datele i instruciunile stau n memorie pn cnd
unitatea central are nevoie de ele. Pentru unitatea central, dispozitivele I/O sunt similare
memoriei pentru c ea poate memora (scrie) date pe un dispozitiv de ieire sau poate citi date
de pe un dispozitiv de intrare. Singura diferen aparent n cadrul familiei Intel 80x86 este
asocierea acestora cu cea ce exist n exteriorul sistemului (lumea exterioar).















2.2. Magistrale
2.2.1. Aspecte generale

Magistralele reprezint legaturi multiple i complexe ntrediferitele pri funcionale ale
microprocesorului.
Microprocesoarele INTEL 80x86 prezint trei magistrale majore:
magistrala de date;
magistrala de adrese;
magistrala de control.
De reinut !
Primul procesor lansat INTEL 8086 conine dou uniti funcionale
autonome: unitatea de executie (EU Execution Unit) i unitatea de
interfaare a magistralei (BIU Bus Interface Unit); ulterior
funcionalitatea acestor uniti a fost divizat pe mai multe uniti i s-au
adugat altele ca de exemplu: unitatea de decodificare a instruciunilor,
unitatea de segmentare i de paginare, unitatea de management a
memoriei cache i procesorul de virgul flotant. Din punct de vedere al
programatorului aceast divizare pe uniti este mai puin vizibil; n
schimb sunt vizibile urmatoarele componente: registrele generale,
registrele de adresare, registrele speciale, magistralele interne de date i
adrese, unitile aritmetico-logice i altele.

SISTEME CU MICROPROCESOARE

40
2. Microprocesoarele INTEL 80x86: arhitecturi i magistrale
Aceste magistrale sunt n general diferite de la un procesor la altul, ele fiind
clasificate dup natura informaiei vehiculate. De exemplu implementarea
magistralelor de date este diferit la 8088 comparativ cu 80386, dar n
ambele cazuri se vehiculeaz date ntre unitatea centrala, memorie i
dispozitivele I/O.
Din punct de vedere electric, nivelele logice implicate pentru componentele tipice
conectate la aceste magistrale n cazul lui 80x86, sunt compatibile TTL.

2.2.2. Magistrala de date

Magistrala de date (Data Bus) are dimensiunea (numrul de linii, care reprezint
limea magistralei) diferit n cadrul familiei 80x86, ea definind ntr-un fel i "mrimea"
procesorului. ntr-un sistem 80x86, magistrala de date poate avea 8, 16, 32 sau 64 bii (linii de
date):
procesoarele 8088 i 80188 au magistrala de date de 8 bii;
procesoarele 8086, 80186, 80286 si 80386SX au o magistrala de 16 bii;
procesoarele 80386DX, 80486 i Pentium Overdrive au magistrala date de 32 bii
procesoarele Pentium, Pentium Pro, Pentium II, Pentium III, i Pentium IV au magistrala
de date de 64 bii (variantele ulterioare au magistrale mai mari).
Existena unei magistrale de 8 bii nu nseamn c un procesor este limitat doar la un tip
de date de 8 bii (adic un octet sau un byte). nseamn de fapt ca procesorul poate accesa
doar un octet ntr-un ciclu de memorie (n cazul MVN). Astfel cei 8 bii ai magistralei de date
la un 8088 pot transmite doar jumtate din informaie n unitatea de timp (ciclu de memorie)
comparativ cu magistrala de date de 16 bii de la 8086. Aceste este motivul pentru care
procesoarele cu o magistral de date de 16 bii sunt n mod natural mai rapide dect cele cu o
magistral de 8 bii.
Dimensiunea magistralei de date afecteaz performanele sistemului mai mult dect
dimensiunea oricrei alte magistrale.
Legat tot de "mrimea" procesorului (care poate fi 8, 16, 32 sau 64 bii) una din
modalitile de definire consider c ea este dat de dimensiunea celui mai mare registru
ntreg de uz general al unitii centrale. Astfel 8088 dei are o magistral de date de 8 bii este
un procesor de 16 bii, iar Pentium cu o magistral de date de 64 de bii este un procesor de 32
de bii. Trebuie fcut distincia ntre registru ntreg, respectiv virgul fix, pentru a nu lua n
considerare registrele unitii de prelucrare n virgula mobil (FPU), atunci cnd ea exist,
registrele care pot avea o dimensiune mai mare.

SISTEME CU MICROPROCESOARE
41
2. Microprocesoarele INTEL 80x86: arhitecturi i magistrale
Dei este evident posibil s prelucrm i date pe 12 bii cu un 80x86, formatul preferat
este cel de 16 bii deoarece oricum procesorul preia i manipuleaz 16 bii de date, preluarea
fcndu-se ntotdeauna n grupe de 8 bii. Astfel manipularea datelor n formate multiplu de 8
bii este ntotdeauna cea mai eficient. Dei procesoarele familiei 80x86 cu magistrale de date
de 16, 32 sau 64 de bii pot prelucra date cu dimensiuni pn la acelea ale magistralei, ele pot
accesa i uniti mai mici de 8, 16 sau 32. Orice, se poate face cu o magistral mai mic se
poate face i cu una mai mare diferind doar timpul n care se acceseaz datele.









2.2.3. Magistrala de adrese

Magistrala de adrese (Address Bus) este cea prin intermediul creia se difereniaz
locaiile de memorie sau dispozitivele I/O n cazul unui transfer de date, asociindu-le acestora
o adres unic. Cnd dorete s acceseze o locaie de memorie sau un anumit dispozitiv I/O,
procesorul plaseaz pe magistrala de adrese o valoare (o adres), circuitele asociate memoriei
sau dispozitivelor I/O recunosc aceast adres i fac ca acestea s citeasc informaia de pe
magistrala de date sau s plaseze informaia pe aceiai magistral. Folosind n linii de adres
(magistrala de adres de n bii) procesorul poate furniza 2
n
valori distincte ale adresei.
Primii membrii ai familiei 80x86, 8086 i 8088 au magistrale de adrese de 20 bii, astfel
nct spaiul de adres are 2
20
= 1.048.576 locaii de memorie distincte, un spaiu de adrese
limitat conform cerinelor actuale. Acest dezavantaj a fost corectat la variantele ulterioare
dup cum este prezentat n tabelul 2.2.

Tab. 2. 2 - Corelaia dimensiunii memoriei adresabil cu tipul procesorului

Procesor Linii Adrese Memorie maxim adresabil
8088 20 1,048,576 1M
8086 20 1,048,576 1M
80188 20 1,048,576 1M
80186 20 1,048,576 1M
80286 24 16,777,216 16M
De reinut !
Magistrala de date este utilizat de CPU pentru a citi i scrie date de la
memorie i porturile I/O.
Dimensiunea magistralei de date afecteaz performanele sistemului mai
mult dect dimensiunea oricrei alte magistrale.
Magistrala de date este bidirecional: transfer date ntre componentele
sistemului.


SISTEME CU MICROPROCESOARE

42
2. Microprocesoarele INTEL 80x86: arhitecturi i magistrale
80386SX 24 16,777,216 16M
80386DX 32 4,294,976,296 4G
80486 32 4,294,976,296 4G
Pentium 32 4,294,976,296 4G
Pentium Pro 36 68,719,476,736 64G
Pentium II 36 68,719,476,736 64G
Pentium III 36 68,719,476,736 64G








2.2.4. Magistrala de control

Magistrala de control (Control Bus) reprezint un set variat de semnale prin care
procesorul comunic cu restul sistemului.
n primul rnd trebuie s existe semnale care s stabileasc sensul transferului de date
de la procesor (scriere Write) sau ctre procesor (citire - Read), astfel exist dou linii de
semnal Read i Write care stabilesc sensul transferului de date. n afar de acestea mai exist
ceasuri de sistem, linii de ntrerupere, de stare i altele.
Componena acestei magistrale este diferit n cadrul familiei dar anumite linii de
control sunt comune.
Semnalele Read i Write mai sus menionate controleaz deci sensul accesului pe
magistrala de date, ele fiind active n "0" i mutual exclusive.
Semnalele de tip activare byte/octet, respectiv semnalele de tip Byte Enable, permit
procesoarelor cu magistrale de date de 16, 32 sau 64 bii s acceseze date cu dimensiuni mai
mici dect magistrala.
Familia 80x86 are dou spaii distincte de adres: pentru memorie i pentru
dispozitivele I/O.
n timp ce magistrala de adrese pentru memorie are dimensiuni diferite, cea pentru I/O
are ntotdeauna 16 bii, permind accesarea a 65.536 locaii sau porturi I/O diferite, un numr
mai mult dect suficient.
Dei familia 80x86 suport dou spaii de adres diferite, nu exist dou magistrale de
De reinut !
Magistrala de adrese este utilizat de CPU pentru a indica adresa locaiei
de memorie care va fi citit sau scris. Numrul locaiilor de memorie
care pot fi apelate de CPU depinde de numrul liniilor de adres
Magistrala de adrese este unidirecional: preia semnale de la
microprocesor i le trimite mai departe ctre memorie i porturile I/O.


SISTEME CU MICROPROCESOARE
43
2. Microprocesoarele INTEL 80x86: arhitecturi i magistrale
adrese separate pentru memorie i I/O. Se utilizeaz aceiai magistral de adrese dar se
folosesc linii de control diferite pentru Read i Write din spaiul de memorie al dispozitivelor
I/O, acestea fiind active tot n "0" i mutual exclusive. Cnd aceste semnale sunt active, sunt
luai n considerare numai cei mai puin semnificativi 16 bii ai magistralei de adrese.
Aceste semnale sunt la rndul lor mutual exclusive cu cele pentru accesarea memoriei.




























De reinut !
Magistrala de control permite microprocesorului s indice memoriei i
dispozitivelor periferice operaia curent.
Semnale curente de control sunt: citirea memoriei, scrierea memoriei,
citirea I/O, scrierea I/O.
Magistrala de control este bidirecional: preia i transmite semnale de
control i stare n/ntre sistem i I/O.

Lucrare de laborator
Lucrarea aferent acestei uniti de nvare se intituleaz
INTRODUCERE N SISTEME CU MICROPROCESOARE
Descriere i funcionare - Software.
Obiectivele laboratorului sunt:
S cunoasc resursele hardware ale microsistemului;
S neleag modul de lucru cu microsistemul;
S nvee s foloseasc microsistemul pentru a realiza programe de
operare cu acesta.
Studenii utilizeaz un microsistem experimental Sistem cu
Microprocesor 32 bii - modul Z3EV
Microsistemul de nvare cu microprocesor pe 32 bii este un sistem
didactic cu microprocesor, bazat pe procesorul Intel 80386EX, care
acoper toat problematica aprut n timpul studierii sistemelor cu
microprocesor
Microsistemul conine toate componentele tipice necesare studierii unui
astfel de sistem: microprocesor, memorie RAM i EPROM, tastatur i
display cu cristale lichide, interfa paralel i serial, intrri i ieiri
analogice

SISTEME CU MICROPROCESOARE

44
2. Microprocesoarele INTEL 80x86: arhitecturi i magistrale


































Test de autoevaluar
1. Precizai avantajele compatibilitii software ntre diferitele
generaii de microprocesore INTEL 80x86
2. Explicai care este diferena ntre EU i BIU i care este rolul
fiecruia.
3. Enumerai unitile care funcioneaz n paralel la microprocesorul
80386.
4. Cte magistrale are microprocesorul 8086?
5. Care sunt caracteristicile i rolul magistralei de date?
6. Care sunt caracteristicile i rolul magistralei de adrese?
7. Care sunt caracteristicile i rolul magistralei de control?
Lucrare de verificare la Unitatea de nvare 2
Aceast unitate de nvare se va regsi n lista de subiecte pentru
examen prin urmtoarele subiecte:
1. Arhitectura microprocesoarelor 80x86;
2. Magistralele microprocesoarelor 80x86.
Rspunsuri i comentarii la ntrebrile din testul de
autoevaluare

Rspunsurile la ntrebrile din testul de evaluare se gsesc n textul
unitii de nvare.

Concluzii
1. Majoritatea calculatoarelor personale existente n prezent pe pia
sunt echipate cu microprocesoarele compatibile Intel 80x86;
2. Calculatoarele cu microprocesoare 80x86 pot rula trei sisteme de
operare foarte rspndite: DOS, Windows, Linux;
3. Aplicaiile care ruleaz pe aceste calculatoare necesit de multe ori
module scrise n limbaj de asamblare, ceea ce impune cunoaterea
acestuia.

SISTEME CU MICROPROCESOARE
45
2. Microprocesoarele INTEL 80x86: arhitecturi i magistrale






Bibliografie
1. Dobriceanu Mircea; Sisteme cu microprocesoare; Notie de curs,
Tipografia Universitii din Craiova, 2012 i format electronic
postat pe http://www.em.ucv.ro
2. Dobriceanu Mircea; Sisteme de achiziie i microprocesoare,
Editura Universitaria Craiova, 2003, p.304, ISBN 973-8043-289-8
3. Rotar Dan; Microprocesorul. Programarea n limbaj de asamblare
a microprocesoarelor: 80x86; TMS 320F240; PIC 16F87x, Editura
ALMA MATER


SISTEME CU MICROPROCESOARE

46
3. Microprocesoarele INTEL 80x86: registrele i organizarea memoriei

Unitatea de nvare nr. 3




MICROPROCESOARELE INTEL 80x86:
REGISTRELE I ORGANIZAREA MEMORIEI



Cuprins Pagina
Obiectivele unitii de nvare nr. 3 48
3.1. Registrele 48
3.1.1. Aspecte generale 48
3.1.2. Registrele de uz general 49
3.1.3. Registrele de segment 54
3.1.4. Registrele de uz special 56
3.2. Organizarea memoriei 58
Lucrare de laborator 63
Test de autoevaluare 63
Lucrare de verificare unitatea de nvare nr. 3 63
Rspunsuri i comentarii la ntrebrile din testul de autoevaluare 64
Concluzii 64
Bibliografie unitatea de nvare nr. 3 64


SISTEME CU MICROPROCESOARE
47
3. Microprocesoarele INTEL 80x86: registrele i organizarea memoriei
OBIECTIVELE unitii de nvare nr. 3

Principalele obiective ale Unitii de nvare nr. 3 sunt:












2.3. Registrele
2.3.1. Aspecte generale

Din punct de vedere al programatorului cele mai utilizate componente ale unitii
centrale sunt registrele i acestea au o importan deosebit n programarea n limbaj de
asamblare.
Fiecare procesor din familia 80x86 conine un set de registre. Particularitatea acestei
familii de procesoare este reprezentat de faptul c un procesor conine un superset de regitrii
ai procesorului precedent. Punctul de plecare l reprezint setul de registre al unitilor
centrale ale procesoarelor 8088, 8086, 80188 i 80186 deoarece cele patru tipuri de
procesoare au acelai tip de registre.
Fabricantul acestor procesoare, firma INTEL, mparte registrele unitii centrale ale
microprocesoarele 80x86 n trei categorii (Fig. 3.1):
registre de uz general;
registre de segment;
registre de uz special.
Registrele de uz general sunt folosite pentru a memora variabilele locale ct
i rezultatele intermediare ale calculelor. Dei aceste registre sunt denumite
de uz general, fiecare dintre ele se utilizeaz ntr-un anumit scop implicit
dar destinaia acestora poate fi schimbat explicit de programator. Registrele
segment sunt utilizate pentru accesarea unor blocuri de memorie numite
segmente. Registrele de uz special au destinaii diverse. Dintre acestea, dou
prezin o importan deosebit i vor fi prezentate pe scurt n continuare.

Cunoaterea rolului i a tipurilor de registre specifice unitii
centrale ale microprocesoarele 80x86;
Cunoaterea modului de organizare a memoriei
microprocesoarele 80x86




SISTEME CU MICROPROCESOARE

48
3. Microprocesoarele INTEL 80x86: registrele i organizarea memoriei














2.3.2. Registrele de uz general

Registrele de uz general sunt n numr de 8, fiecare de 32 de bii, care pot fi utilizate de
orice aplicaie: EAX, EBX, ECX, EDX, ESI, EDI, EBP i ESP. Prefixul E provine de la
"extended - extins" i este folosit pentru a diferenia registrele de 32 de bii (atunci cnd
acestea exist) de cele de 16 bii: AX, BX, CX, DX, SI, DI, BP i SP. Exist i 8 registre de 8
bii : AL, AH, BL, BH, CL, CH, DL i DH. Acestea nu sunt registre separate, notaiile fiind
mai degrab alternative. Nu exist 24 de registre independente, registrele de 32 de bii sunt
suprapuse peste cele de 16 bii iar o parte dintre aceste la rndul lor sunt suprapuse peste cele
de 8 bii (Fig. 3.2).
Fiecare dintre cei 8 registre de uz general AX, BX, CX, DX, SP, BP, DI,SI sunt registre
pe 16 bii pentru microprocesorul 8086, iar de la procesorul 80386 ncoace au devenit registre
pe 32 de bii, denumii, respectiv: EAX, EBX, ECX, EDX, ESP, EBP, EDI, ESI. Mai mult,
cei mai puin semnificativi 8 bii ai regitrilor AX, BX, CX, DX formeaz respectiv regitrii
AL, BL, CL, DL (litera L provine de la Low), iar cei mai semnificativi 8 bii ai acelorai
regitri formeaz regitrii AH, BH, CH, DH (litera H provine de la High).
Modificarea unuia dintre registre nseamn modificarea a cel puin unui alt
registru i cel mult a altor trei registre. De exemplu modificare lui EAX
poate afecta AL, AH i AX.
Registrele de 16 bii sunt mapate direct pentru 8086/88 i 80286, iar cele de
32 de bii exist doar la procesoarele cu arhitectur IA 32.
31 0 15 0
31 0
EAX
EBX
ECX
EDX
ESI
EDI
EBP
ESP
CS
DS
SS
ES
FS
GS
EEFLAGS
EIP
Registrele de uz general
Registrele de segment
Registrele cu destinaie special
Fig 3.1. Registrele familiei Intel 80x86

SISTEME CU MICROPROCESOARE
49
3. Microprocesoarele INTEL 80x86: registrele i organizarea memoriei
Dei n calcule se pot folosi oricare din aceste registre, multe instruciuni
lucreaz mai eficient iar altele chiar impun utilizarea unui anumit registru.















Fiecare dintre registre pot fi folosite pentru orice operaie posibil, dar sunt folosite de
ctre programatori n urmtoarele scopuri:

AX (EAX) (Accumulator Register - registru acumulator) utilizat pentru pstrarea
temporar a datelor (operanzi i rezultat) n vederea efecturii de operaii aritmetice, logice
i de deplasare. Totdeauna operaiile de nmulire i mprire presupun implicarea
registrului AX. n plus, registrul AX este folosit i pentru toate transferurile de date de
la/ctre porturile de Intrare/Ieire. Poate fi accesat pe poriuni de 8, 16 sau 32 de bii, fiind
referit drept AL (cei mai puin semnificativi 8 bii din AX), AH (cei mai semnificativi 8
bii din AX), AX (16 bii) sau EAX (32 de bii).
Se prezint un exemplu de instruciuni ce utilizeaz registrul AX. De remarcat este
faptul c transferurile de date se fac pentru instruciunile (denumite i mnemonice) Intel de la
dreapta spre stnga, ( exact invers dect la Motorola).
Instruciunea: MOV AX, 1234H ncarc valoarea 1234H (4660 n zecimal) n registrul
acumulator AX. Dup cum spuneam, cei mai puini semnificativi 8 bii ai registrului AX sunt
identificai de AL (A-Low) iar cei mai semnificativi 8 bii ai aceluiai registru sunt identificai
ca fiind AH (A-High). Acest lucru este utilizat pentru a lucra cu date pe un octet, permind ca
8 bii
32 bii
Fig. 3.2. Interdependena registrelor de uz general
EAX
EBX
EDX
ECX
AX
AH AL
BX
BH BL
DX
DH DL
CX
CH CL
ESI
SI
EDI
DI
EBP
BP
ESP
SP
16 bii
32 bii
16 bii

SISTEME CU MICROPROCESOARE

50
3. Microprocesoarele INTEL 80x86: registrele i organizarea memoriei
registrul AX s fie folosit pe postul a doi regitri separai (AH i AL). Aceeai regul este
valabil i pentru regitrii de uz general BX, CX, DX.
Urmtoarele trei instruciuni seteaz registrul AH cu valoarea 2, incrementeaz cu 1
aceast valoare i apoi o copiaz n registrul AL:
MOV AH, 2
INC AH
MOV AL, AH
Valoarea final a registrului AX va fi 33 (AH = AL = 3).

BX (EBX) (Base Register - registru de baz) folosit la stocarea adreselor de memorie
(accesarea indirect a memoriei), pentru a face referire la diverse structuri de date, cum ar
fi vectorii stocai n memorie.
O valoare reprezentat pe 16 bii stocat n registrul BX poate fi utilizat ca fiind o
poriune din adresa unei locaii de memorie ce va fi accesat. Spre exemplu, urmtoarele
instruciuni ncarc registrul AH cu valoarea din memorie de la adresa 22.
MOV AX, 0
MOV DS, AX
MOV BX, 22
MOV AH, [ BX ]
Se observ c am ncrcat valoarea 0 n registrul DS nainte de a accesa locaia de memorie
referit de registrul BX. Acest lucru este datorat segmentrii memoriei; implicit, atunci
cnd este folosit ca pointer de memorie, BX face referire relativ la registrul de segment
DS (adresa la care face referire este o adres relativ la adresa de segment coninut n
registrul DS).

CX (ECX) (Count Register - registru contor) joac rol de contor n bucle, adic
contorizeaz numrul de iteraii a unei instruciuni de ciclare LOOP sau specific numrul
de caractere dintr-un ir.
Rolul de contor al registrului CX se observ din exemplul urmtor:
MOV CX, 10
start:

<instruciuni ce se vor executa de 10 ori>

SUB CX, 1

SISTEME CU MICROPROCESOARE
51
3. Microprocesoarele INTEL 80x86: registrele i organizarea memoriei
JNZ start
Deoarece valoarea iniial a lui CX este 10, instruciunile cuprinse ntre eticheta start i
instruciunea JNZ se vor executa de 10 ori (pn cnd registrul CX devine 0).
Instruciunea SUB CX, 1 decrementeaz registrul CX cu valoarea 1 iar instruciunea JNZ
start determin saltul napoi la eticheta start dac CX nu are valoarea 0.
n limbajul microprocesorului exist i o instruciune special legat de ciclare. Aceasta
este instruciunea LOOP, care este folosit n combinaie cu registrul CX. Liniile de cod
urmtoare sunt echivalente cu cele anterioare, dar aici se utilizeaz instruxiunea LOOP:
MOV CX, 10
start:

<instruciuni ce se vor executa de 10 ori>

LOOP start
Se observ c instruciunea LOOP este folosit n locul celor dou instruciuni SUB i
JNZ anterioare; LOOP decrementeaz automat registrul CX cu 1 i execut saltul la
eticheta specificat (start) dac CX este diferit de zero, totul ntr-o singur instruciune.

DX (EDX) (Data Register registru de date) are n general dou destinaii: el stocheaz
depirile pentru anumite operaii aritmetice sau stocheaz adresa portului I/O pentru
accesarea perifericelor.
Instruciunea IN AL, DX copiaz o valoare de tip Byte dintr-un port de intrare, a crui
adres se afl n registrul DX.
Urmtoarele instruciuni determin scrierea valorii 100 n portul I/O 1001:
...
MOV AL, 100
MOV DX, 1001
OUT DX, AL

Referitor la operaiile de nmulire i mprire, atunci cnd mprim un numr pe 32 de
bii la un numr pe 16 bii, cei mai semnificativi 16 bii ai dempritului trebuie s fie n
DX. Dup mprire, restul mpririi se va afla n DX. Cei mai puin semnificativi 16 bii
ai dempritului trebuie s fie n AX iar ctul mpririi va fi n AX. La nmulire, atunci
cnd se nmulesc dou numere pe 16 bii, cei mai semnificativi 16 bii ai produsului vor fi
stocai n DX iar cei mai puin semnificativi 16 bii n registrul AX.

SISTEME CU MICROPROCESOARE

52
3. Microprocesoarele INTEL 80x86: registrele i organizarea memoriei
SI (ESI) i DI (EDI) (Source Index - index surs i Destination Index - index destinaie)
prezint mai multe destinaii: pot fi folosite ca pointer (indicator) la adresarea indirect a
memoriei (similar cu registrul BX pentru a referi adrese de memorie) sau pot fi folosite n
operaiile cu iruri.
Un exemplu de utilizare pentru registru SI l reprezint secvena de instruciuni urmtoare
n ccare se ncarc valoarea (pe 8 bii) din memorie de la adresa 25 n registrul AL.
MOV AX, 0
MOV DS, AX
MOV SI, 25
MOV AL, [ SI ]
Un exemplu de utilizare pentru registrul DI (se utilizeaz n mod asemntor ca
registrul SI) l reprezint secvena de instruciuni urmtoare n care se adun la registrul BL
valoarea pe 8 bii stocat la adresa 1007
MOV AX, 0
MOV DS, AX
MOV DI, 1007
ADD BL, [ DI ]

BP (EBP) (Base Pointer indicator de baz) este similar cu registrul BX, folosit pentru
accesarea perametrilor i a variabilelor locale dintr-o procedur.
SP (ESP) (Stack Pointer indicator stiv) conine adresa de memorie a stivei programului
n curs de execuie. Acest registru nu trebuie ntrebuinat n alte scopuri.

Pentru a exemplifica rolul regitrilor BP i SP, se prezint poriunea de memorie
denumit stiv (stack).
Stiva (Fig. 3.3) reprezint o poriune special de locaii adiacente din memorie. Aceasta
este coninut n cadrul unui segment de memorie i identificat de un selector de segment
memorat n registrul SS (cu excepia cazului n care se folosete modelul nesegmentat de
memorie n care stiva poate fi localizat oriunde n spaiul de adrese liniare al programului).
Stiva este o poriune a memoriei unde valorile pot fi stocate i accesate pe principul
LIFO (Last In First Out), n care ultima valoare stocat n stiv este prima ce va fi citit din
stiv.
Stiva este utilizat la apelul unei proceduri sau la ntoarcerea dintr-un apel de procedur
(principalele instruciuni folosite sunt CALL i RET).


SISTEME CU MICROPROCESOARE
53
3. Microprocesoarele INTEL 80x86: registrele i organizarea memoriei

























2.3.3. Registrele de segment

Registrele de segment sunt asociate unui anumit tip de informaie memorat: program
(cod), date (variabile) i stiv.
Registrele de segment sunt registre de 16 bii care conin adresa de baz (de nceput) a
unui segment de memorie.
Memoria direct adresabil de 1 MB necesit o magistral de adrese de 20 bii.
Registrele interne ale procesorului fiind de 16 bii, soluia gsit se numete segmentarea
memoriei; n acest caz memoria de 1MB este mprit n 16 segmente de cte 64 KB (16*64
KB =1024 KB =1 MB), fiecare segment fiind astfel adresabil cu 16 bii.
Fig. 3.3. Structura stivei
Segmentul de stiv
Baza stivei
(valoarea iniial SP sau
ESP)
Variabile locale pentru
procedura apelat
Parametrii transmii
procedurii apelate
Registrul BP (EBP)
Registrul SP (ESP)
Instruciunea PUSH determin
poziionarea vrfului stivei la o
adres mai mic
Instruciunea POP determin
poziionarea vrfului stivei la o
adres mai mare
Vrful stivei
Indicator de revenire instructiune
Registrul SP (ESP) este setat s fac
referire la adresa de ntoarcere din
procedur
De reinut !
ncepnd de la versiunea 386 registrele de uz general au fost extinse la
32 de bii (EAX, EBX, ECX, EDX, ESI, EDI, EBP, ESP). Primele 4
registre pot fi adresate la nivel de octet (ex: AL, AH, BL, BH, CL, CH,
DL, DH), cuvnt (ex: AX, BX, CX, DX ) sau dublu-cuvint(EAX, EBX,
ECX, EDX). Celelalte se adreseaz pe cuvt sau dublu-cuvint.

SISTEME CU MICROPROCESOARE

54
3. Microprocesoarele INTEL 80x86: registrele i organizarea memoriei
Procesorul poate s utilizeze simultan attea segmente de memorie cte registre de
segment posed.
Adresele de nceput (de baz) ale celor 4 segmente sunt coninute n cele 4 registre de
segment (Cod, Date, Stiv i de Date suplimentare).
CS (Code Segment - segment de cod) conine selectorul de segment pentru segmentul de
cod, acolo unde sunt memorate instruciunile care se execut. Procesorul preia
instruciunile din segmentul de cod, folosind o adres logic format din selectorul de
segment din CS i coninutul lui EIP. EIP conine adresa liniar n interiorul segmentului
de cod pentru urmtoarea instruciune ce trebuie executat. CS nu poate fi ncrcat n mod
explicit de programul aplicaie, este ncrcat implicit de instruciuni sau de operaii interne
ale procesorului care modific fluxul program (salturi, apeluri de subrutine, ntreruperi).
DS (Data Segment - segment de date), ES (Extra Segment - segment de date ), FS (Extra
Segment) i GS (Extra Segment) conin selectori de segment pentru 4 segmente de date.
Disponibilitatea simultan a 4 segmente de date permite un acces eficient i sigur la diferite
tipuri de structuri de date. De exemplu se pot crea 4 segmente separate de date: unul
pentru structurile de date din modulul curent, altul pentru datele exportate dintr-un modul
de nivel superior, un al treilea pentru structurile de date create dinamic i un al patrulea
pentru date comune cu un alt program. Pentru a accesa segmente de date adiionale,
aplicaia trebuie s ncarce selectorii de segment corespunztori n aceste registre.
SS (Stack Segment sment de stiv ) conine selectorul pentru segmentul de stiv. Toate
operaiile cu stiva folosesc registrul SS pentru identificarea segmentului de stiv. Spre
deosebire de registrul CS, registrul SS poate fi ncrcat explicit, cea ce permite aplicaiilor
s creeze stive multiple i s comute ntre ele.
Cele patru registre de segment CS, DS, SS i ES sunt aceleai cu registrele
de segment de la 8086/88 i 80286 pe cnd FS i GS au aprut odat cu
IA32 (80386), fiind registrele de segment de uz general similari lui ES.
Registrele de segment CS, DS, SS, ES, FS, i GS conin o valoare pe 16 bii
utilizat ca un selector de segment. Acesta este un indicator (pointer) special
care identific un segment n memorie.
Pentru a accesa un segment particular din memorie, selectorul de segment pentru acel
segment trebuie s fie prezent n registrul de segment corespunztor. Atunci cnd scriem
codul pentru o aplicaie n limbaj de asamblare, selectorii de segment se creeaz folosind
directive ale asamblorului i simboluri. Asamblorul i link-editorul creeaz apoi valorile
actuale pentru selectorii de segment pe baza acestora.

SISTEME CU MICROPROCESOARE
55
3. Microprocesoarele INTEL 80x86: registrele i organizarea memoriei













2.3.4. Registrele de uz special

Exist dou registere cu destinaie special:
FLAGS (Flags Register registru indicator de condiii), (EFLAGS, la procesoarele pe
32 de bii) sunt utilizai pentru a memora informaii despre starea general a
sistemului, proprieti ale rezultatului unor operaii aritmetice sau logice, precum i
pentru exercitarea unor aciuni de control al activitii procesorului (Fig.3.4).














De reinut !
Pentru a adresa o instruciune, microprocesorul combin coninutul
registrului segment de cod CS cu al registrului indicator de adres, IP,
obinnd o adres fizic de 20 bii .
Registrul DS conine adresa de nceput a segmentului de date, SS conine
adresa de nceput a segmentului stiv iar ES conine adresa de nceput a
unui segment de date suplimentar.
Segmentul de cod conine instruciuni iar ultimele trei segmente de
memorie sunt dedicate operanzilor (date).
Fig. 3.4. Bii registrului FLAGS
15 0
Overflow (depire)
Direction (direcie)
Intrerrupt (ntrerupere)
Sign (semn)
Zero
Auxiliary Carry (transport auxiliar)
Parity (paritate)
Carry (transport)
1 2 3 4 5 6 7 8 9 10 11 12 13 14
Trap (pas cu pas)

SISTEME CU MICROPROCESOARE

56
3. Microprocesoarele INTEL 80x86: registrele i organizarea memoriei

Carry Flag (indicatorul de transport) se activeaz (n ''1'' logic) la apariia unui bit
de transport (depirea lungimii normale a rezultatului) la adunare sau de mprumut
la scdere; este asociat rezultatului unei operaii aritmetice sau logice i se
comport ca al noulea bit (b8) al acestuia.
Parity Flag (indicator de paritate) se activeaz (n ''1'' logic) cnd rezultatul unei
operaii aritmetice sau logice este un octet cu numr par de bii.
Auxiliary Flag (indicator de transport auxiliar) se activeaz cnd apare transport sau
mprumut n operaiile aritmetice i logice ntre biii 3 i 4.
Zero Flag (indicator de zero) se activeaz (n ''1'' logic) dac rezultatul unei
operaii aritmetice sau logice este zero.
Sign Flag (indicator de semn) conine bitul cel mai semnificativ al rezultatului, deci
copiaz bitul de semn; va fi ''1'' pentru rezultat negativ i ''0'' pentru un rezultat
pozitiv.
Overflow Flag (indicator de depire) se activeaz (n ''1'' logic) cnd apare
depairea capacitii registrului ce conine rezultatul, ca urmare a unei operaii
aritmetice cu operanzi cu semn; va fi ''1'' cnd apare transport sau mprumut n/din
rangul de semn.
Trap Flag (indicator pentru modul de lucru ''pas cu pas'') dac este poziionat n ''1''
logic, microprocesorul nu mai lucreaz la viteza data de semnalul de tact ci n
ritmul impus de utilizator. Acest mod de lucru este deosebit de util la depanarea
programelor.
Interrupt Flag (indicator pentru controlul ntreruperilor) dac este poziionat n ''1''
logic (prin instruciunea corespunztoare), sunt validate cererile de ntrerupere de
tip INTR (mascabile); invalidarea acestora se face prin poziionarea lui IF n ''0'',
caz n care cererile INTR nu vor fi luate n consideraie.
Direction Flag (indicator de ''direcie"), are efect n operaiile cu iruri. Dac este
poziionat n ''1'', dup fiecare transfer, adresa operandului din ir se incrementeaz
(crete cu 1) iar dac este poziionat n ''0'' adresa se decrementeaz.

IP (instruction pointer indicator de instruciune ) (EIP, la procesoarele pe 32 de bii) este
folosit pentru a stoca adresa urmtoarei instruciuni ce va fi executat de ctre
microprocesor. Pe msur ce o instruciune este executat, indicatorul de instruciune este
incrementat i se va referi la urmtoarea adres de memorie (unde este stocat urmtoarea
instruciune ce va fi executat). De regul, instruciunea ce urmeaz a fi executat se afl la

SISTEME CU MICROPROCESOARE
57
3. Microprocesoarele INTEL 80x86: registrele i organizarea memoriei
adresa imediat urmtoare instruciunii ce a fost executat, dar exist i cazuri speciale
(rezultate fie din apelul unei subrutine prin instruciunea CALL, fie prin ntoarcerea dintr-o
subrutin, prin instruciunea RET). Indicatorul de instruciuni nu poate fi modificat sau citit
n mod direct; doar instruciuni speciale pot ncrca acest registru cu o nou valoare.
Registrul indicator de instruciune nu specific pe de-a ntregul adresa din memorie a
urmtoarei instruciuni ce va fi executat, din aceeai cauz a segmentrii memoriei. Pentru
a aduce o instruciune din memorie, registrul CS ofer o adres de baz iar registrul
indicator de instruciune indic adresa de deplasament plecnd de la aceast adres de
baz.











2.4. Organizarea i adresarea memoriei
Memoria adresat de unitatea central prin intermediul magistralei de adrese se numete
memorie fizic. Memoria fizic este organizat ca o secven de octei (8bii, byte). Fiecare
octet are asignat o adres unic numit adres fizic. Spaiul de adrese fizice se ntinde de la
0 la maxim 2
32
-1 (4GB). Practic orice sistem de operare proiectat s lucreze cu un procesor
IA32 va folosi facilitile oferite de sistemul de gestiune al memoriei (memory management).
Printre caracteristicile acestuia se numr segmentarea i paginarea, care permit ca memoria
s fie gestionat eficient i fiabil.
n continuare se prezent metodele de baz pentru adresarea memoriei folosite de
sistemul de gestiune al memoriei.
Cnd un program utilizeaz sistemul de gestiune al memoriei, el nu va adresa direct
memoria fizic. Accesul la aceasta se va face folosind unul din cele trei modele de memorie
posibile: plat, segmentat, adres real.
De reinut !
Exist dou registere cu destinaie special:
FLAGS (Flags Register registru indicator de condiii), utilizai pentru a
memora informaii despre starea general a sistemului, proprieti ale
rezultatului unor operaii aritmetice sau logice, precum i pentru
exercitarea unor aciuni de control al activitii procesorului.
IP (instruction pointer indicator de instruciune) folosit pentru a stoca
adresa urmtoarei instruciuni ce va fi executat de ctre microprocesor.

SISTEME CU MICROPROCESOARE

58
3. Microprocesoarele INTEL 80x86: registrele i organizarea memoriei
n cazul modelului plat memoria apare programatorului ca un singur spaiu de adrese
continuu numit spaiu de adrese liniar. Codul (instruciunile), datele (variabilele) i stivele
pentru proceduri (subrutine) sunt toate coninute n acest spaiu. Spaiul liniar de adrese
este adresabil la nivel de octet (byte), cu adrese succesive de la 0 la maxim 2
n
-1. O adres
de octet n spaiul liniar este numit adres liniar.

Pentru modelul de memorie segmentat memoria apare programatorului ca un grup de spaii
de adres independente numite segmente. n acest model codul, datele i stivele sunt, tipic,
coninute n segmente separate.
Pentru a adresa un octet dintr-un segment, programul utilizeaz o adres logic, care
const dintr-un selector de segment i un offset (decalaj):
selectorul de segment identific segmentul care va fi accesat;
offsetul identific octetul adresat n spaiul de adres al segmentului.
Programele rulnd pe o Arhitectur Intel 32 pot accesa pn la 16383 de segmente de tipuri
i mrimi diferite i fiecare segment poate avea pn la 2
32
octei. Intern, toate segmentele
definite pentru un sistem (program) sunt mapate n spaiul de adrese liniar al procesorului.
Astfel procesorul translateaz fiecare adres logic ntr-o adres liniar pentru a accesa o
locaie de memorie. Aceast translaie este transparent pentru aplicaie (program).
Principala justificare pentru modelul segmentat este creterea fiabilitii (siguranei de
funcionare) programelor i sistemului n ansamblu. De exemplu prin plasarea stivei
programului ntr-un segment separat ne asigurm c aceasta nu va crete n spaiul de
memorie al codului i/sau datelor, suprascriind instruciunile sau variabilele. Plasnd
codul, datele i stivele sistemului de operare n segmente separate le protejeaz de
programul aplicaie i invers, efectul final este cel de izolare a eventualelor greeli de
programare.
Indiferent de model (plat sau segmentat) arhitectura Intel ofer i faciliti pentru a diviza
spaiul liniar de adrese n pagini i de a mapa aceste pagini ntr-o memorie virtual.
Dac un sistem de operare folosete mecanismul de paginare al arhitecturii Intel, existena
paginilor este transparent pentru aplicaie.

Modelul mod adres real este modelul de memorie pentru procesorul 8086 (8088, 80186,
80188). El este disponibil la toate variantele de procesoare ulterioare pentru a asigura
compatibilitatea codului vechilor programe scrise pentru procesoarele 8086.
Modul adres real folosete o implementare specific a memoriei segmentate n care
spaiul liniar de adrese pentru program (aplicaie) i/sau sistemul de operare const ntr-un

SISTEME CU MICROPROCESOARE
59
3. Microprocesoarele INTEL 80x86: registrele i organizarea memoriei
set de segmente fiecare avnd dimensiunea pn la 64Koctei (Fig. 3.5).
Dimensiunea maxim a spaiului de adrese liniar este de 2
20

(1024KB =1MB)



















Modul n care este generat adresa fizic de memorie (acest mod fiind i cel mai simplu) n
cazul modelului mod adres real (8086/88, 80186/188), const n nsumarea (sumator de 20
de bii) offset-ului cu selectorul de segment, acesta din urm fiind deplasat spre stnga cu 4
poziii nainte de nsumare iar transportul este ignorat (fig. 3.6).









Fig. 3.5. Organizarea memoriei
Adres liniar
Spaiu de
adrese
liniar
Segmente
Offset
Adres logic
Selector segment
Spaiu de
adrese
liniar
Adres logic
Offset
Selector segment
Spaiu de
adrese
liniar
divizat n
segmente
egale
a. Model plat
b. Model segmentat
c. Model pentru modul adres real
Fig. 3.6. Generarea adresei fizice de memorie
Adres fizic
Adres logic
Memorie
1 2 3 B 7
19 0
+
0 0 7 7
0 0 7 7
15 0 15 0
15 0
1 2 3 4
1 2 3 4 0
19
Offset
Segment
Deplasare (shift) stnga cu 4 bii
=
0

SISTEME CU MICROPROCESOARE

60
3. Microprocesoarele INTEL 80x86: registrele i organizarea memoriei
n cazul modelului segmentat, o unitate dedicat a procesorului numit unitate de
segmentare translateaz adresa logic din program ntr-o adres liniar.
Locaiile segmentelor n spaiul de adres liniar sunt memorate n structurile de date
numite descriptori de segment. Unitatea de segmentare calculeaz adresa folosind descriptorii
de segment i offsetul, extras din instruciune. Adresa liniar este trimis la o unitate de
paginare i la unitile de cache. Cnd un segment este adresat pentru prima oar descriptorul
su de segment este memorat ntr-un registru al procesorului. Un program poate avea pn la
16383 segmente. La un moment dat pot fi memorai n registrele procesorului pn la 6
descriptori de segment.
Se prezint relaiile ntre adresa logic, cea liniar i cea fizic (Fig. 3.7).














Unitatea de paginare permite accesarea unor structuri de date mai mari dect memoria
fizic (RAM) disponibil, asigurnd pstrarea acestora parial n memorie i parial pe un
suport extern (hard disk). Paginarea mparte spaiul de adrese liniar n blocuri de 4KB numite
pagini. Ea folosete structuri de date particulare (n memorie) numite tabele de pagini pentru
maparea spaului liniar de adrese n spaiul fizic. Adresa fizic este plasat pe magistrala de
adrese a procesorului prin intermediul unitii de cache care o utilizeaz i ea. Unitatea de
paginare identific i problemele care pot aprea, cum ar fi un acces la o pagin care nu exist
n memorie, genernd un eveniment numit eroare pagin ("page fault"). ntr-o astfel de
situaie sistemul de operare poate ncerca s aduc pagina respectiv de pe suportul extern
(disk). Dac este necesar poate i elibera spaiu de memorie trimind alt pagin pe disk.
Fig. 3.7. Relaiile ntre adresa logic, liniar i fizic
Adres fizic
Adres liniar
Adres de baz pagin
Offset
Pagin
Offset
Pagin
Offset Tabel
Pagini
Offset Director
Pagini
Selector
Segment
Offset Segment
Translatare unitate de
segmentare
Translatare unitate de
paginare
31 12 11 0
31 22 21 12 11 0
47 32 31 0
Adres logic

SISTEME CU MICROPROCESOARE
61
3. Microprocesoarele INTEL 80x86: registrele i organizarea memoriei
Dac paginarea nu este activ, adresa fizic este identic cu adresa liniar. Spre deosebire
de segmentare, paginarea este invizibil (transparent) pentru aplicaii, dar nu furnizeaz o
protecie similar acesteia. Paginarea este vizibil doar pentru sistemul de operare care o
folosete pentru a satisface cerinele de memorie ale aplicaiilor.






























De reinut !
Una dintre cele mai importante caracteristici ale memoriei este modul de
organizare al ei i implicit modul de accesare a informaiei din memorie.
Memoria este organizat ca un set de locaii (celule) de memorare
numerotate consecutiv ncepnd de la 0.
Adresa fizic a unei locaii de memorie este reprezentat printr-un numr
asociat locaiei respective, iar mulimea total a adreselor fizice
reprezint spaiul de adrese fizice al memoriei care este limitat de
dimensiunea magistralei de adrese.
O adres logic este o adres utilizat ntr-o instruciune dintr-un
program iar mulimea total a acestora reprezint spaiul adreselor
logice. Organizarea acestui spaiu definete arhitectura memoriei i este
de o importan major pentru orice programator.
Maparea este procesul prin care adresele logice pot fi translatate n
adrese fizice, adic este un mecanism de realocare a spaiului de adrese
logice peste spaiul de adrese fizice.
Segmentarea memoriei este un mecanism de management al memoriei
care permite programatorilor s-i partiioneze programele n module
care pot opera independent unul de cellalt i care pot crete sau
descrete n dimensiune.
n acest mod memoria este divizat logic n mai multe pri numite
segmente de memorie. n fiecare segment adresarea componentelor sale
(cuvinte de memorie) este liniar. O adres de memorie este compus n
acest caz din selectorul segmentului de memorie i deplasamentul
(offset-ul) din cadrul segmentului respective.
Unitatea de paginare permite accesarea unor structuri de date mai mari
dect memoria fizic (RAM) disponibil, asigurnd pstrarea acestora
parial n memorie i parial pe un suport extern (hard disk).

SISTEME CU MICROPROCESOARE

62
3. Microprocesoarele INTEL 80x86: registrele i organizarea memoriei


































Test de autoevaluare
1. Care sunt registrele unitii centrale ale microprocesoarele 80x86 i
ce rol ndeplinesc?
2. Ce este stiva i cnd se utilizeaz aceasta?
3. Care sunt biii registrului indicator de condiii?
4. Ce este memoria fizic?
5. n ce const modelul de memorie plat?
6. n ce const modelul de memorie segmentat?
7. n ce const modelul mod adres real?
8. Ce rol are unitatea de paginare?
Lucrare de verificare la Unitatea de nvare 3
Aceast unitate de nvare se va regsi n lista de subiecte pentru
examen prin urmtoarele subiecte:
1. Registrele unitii centrale ale microprocesoarele 80x86;
2. Organizarea memoriei la microprocesoarele 80x86.
Lucrare de laborator
Lucrarea aferent acestei uniti de nvare se intituleaz
PROGRAMAREA N LIMBAJ DE ASAMBLARE FOLOSIND
SIMULATORUL SMS32: utilizarea registrelor interne.
Obiectivele laboratorului sunt:
Prezentarea i descrierea simulatorului SMS32;
Setul de instruciuni pentru simulatorul SMS32;
Necesitatea i explicarea programrii n limbaj de asamblare;
Iniiere n limbaj de asamblare.
Studenii utilizeaz un program care este un simulator al structurii
minimale a unui microprocesor pe 8 bii. Acest simulator const dintr-o
unitate central (CPU), o unitate de memorie RAM de 256 bii i 16
porturi I/O (Intrare/Ieire) din care sunt folosite numai 5 porturi.
Folosind acest simulator se pot rula programe diverse, care apoi pot fi
folosite ntr-un sistem real, care va avea n locul memoriei RAM o
memorie ROM, n aceasta fiind nscris un singur program.


SISTEME CU MICROPROCESOARE
63
3. Microprocesoarele INTEL 80x86: registrele i organizarea memoriei

























Rspunsuri i comentarii la ntrebrile din testul de
autoevaluare

Rspunsurile la ntrebrile din testul de evaluare se gsesc n textul
unitii de nvare.

Concluzii
1. Particularitatea microprocesoarelor INTEL 80x86 este reprezentat
de faptul c un procesor conine un superset de regitrii ai
procesorului precedent.
2. Una dintre cele mai importante caracteristici ale memoriei este
modul de organizare al ei i implicit modul de accesare a informaiei
din memorie.

Bibliografie
1. Dobriceanu Mircea; Sisteme cu microprocesoare; Notie de curs,
Tipografia Universitii din Craiova, 2012 i format electronic
postat pe http://www.em.ucv.ro
2. Dobriceanu Mircea; Sisteme de achiziie i microprocesoare,
Editura Universitaria Craiova, 2003, p.304, ISBN 973-8043-289-8
3. Rotar Dan; Microprocesorul. Programarea n limbaj de asamblare
a microprocesoarelor: 80x86; TMS 320F240; PIC 16F87x, Editura
ALMA MATER


SISTEME CU MICROPROCESOARE

64
4. Microprocesoarele INTEL 80x86: setul de instruciuni

Unitatea de nvare nr. 4




MICROPROCESOARELE INTEL 80x86
SETUL DE INSTRUCIUNI





Cuprins Pagina
Obiectivele unitii de nvare nr. 4 66
4.1. Aspecte generale privind programarea n limbaje de asamblare
66
4.2. Precizri privind reprezentarea numerelor n sistemele cu
microprocesoare
68
4.3. Tipuri de date utilizate n limbaje de asamblare
71
4.4. Setul de instruciuni al microprocesoarelor INTEL 80x86 73
4.4.1. Sintaxa unei instructiuni n limbaj de asamblare 73
4.4.2. Grupe de instruciuni 74
Lucrare de laborator 85
Test de autoevaluare 85
Lucrare de verificare unitatea de nvare nr. 4 85
Rspunsuri i comentarii la ntrebrile din testul de autoevaluare 86
Concluzii 86
Bibliografie unitatea de nvare nr. 4 86



SISTEME CU MICROPROCESOARE
65
4. Microprocesoarele INTEL 80x86: setul de instruciuni

OBIECTIVELE unitii de nvare nr. 4

Principalele obiective ale Unitii de nvare nr. 4 sunt:












4.1 . Aspecte generale privind programarea n limbaj de
asamblare

Un microprocesor poate fi programat:
folosind programarea n cod main;
folosind programare n limbaj asamblare;
folosind un limbaj de programare de nivel nalt;
folosind o combinaie a celor trei metode.
Totalitatea instruciunilor pe care un procesor le poate recunoate i executa, formeaz
setul de instruciuni al microprocesorului respectiv.
Un program scris n limbaj de asamblare este salvat ntr-un fiier cu extensia .asm.
Acest tip de fiier poate fi editat cu orice tip de editor de text, de exemplu Notepad.
Programarea n limbaj de asamblare presupune folosirea unui set de instruciuni
specifice fiecrui tip de microprocesor.
Codurile instruciunilor se formuleaz n limbaj de asamblare ca i cuvinte cheie,
prescurtate de obicei, care exprim funcia reprezentat de codul respectiv. Aceste cuvinte se
numesc mnemonici.
Orice program scris n limbaj de asamblare va fi transformat prin diverse operaii n
limbaj cod main. Acesta folosete instruciuni codate n binar fiind de fapt singurul limbaj
neles de procesor.
Programarea n limbaj de asamblare este superioar programrii n cod main i
inferior programrii ntr-un limbaj de nivel nalt.
Cunoaterea avantajului i respectiv dezavantajului
programrii n limbaj de asamblare;
Cunoaterea sintaxei unei instruciuni i a grupelor de
instruciuni;



SISTEME CU MICROPROCESOARE

66
4. Microprocesoarele INTEL 80x86: setul de instruciuni
Dei programarea n limbaj de asamblare este mult mai meticuloas i mai restrictiv
este necesar folosirea lui n cazul controlrii unui proces real unde viteza de execuie este
esenial.
Deoarece se cunoate cu exactitate numrul de cicluri main necesar execuiei unei
instruciuni n limbaj de asamblare, deci implicit timpul real de execuie, poate fi determinat
timpul de execuie al unui program, factor esenial n cadrul unui proces real, respectiv
execuie n timp real. Aceasta este principalul motiv pentru care programarea n limbaj de
asamblare este actual. Datorit apariiei a noi procesoare cu frecvene de tact foarte mari
acest aspect pare rezolvat, totui preul unui asemenea procesor nu se justific n folosirea
unor sisteme de comand simple n cele mai multe cazuri.

Avantaje ale limbajului de asamblare:
viteza foarte mare de execuie a programelor (unele programe scrise i optimizate n
asamblare au viteza de executie pn la 5-10 de ori mai mare decat cele scrise n C sau
Pascal);
mrimea codului executabil este foarte mic;
ajut utilizatorul s neleag mai bine cum funcioneaz microprocesorul i s scrie
programe eficiente i n limbaj de programare de nivel nalt.
Dezavantaje ale limbajului de asamblare:
nu este portabil; un program scris pentru calculatoare IBM PC nu va rula pe un Apple
Macintosh (difer unele instructiuni);
un program n asamblare este mai greu de scris i ia mai mult timp dect un program scris
n Pascal sau C;
un program scris n asamblare este mai greu de depanat.

Etapele elaborrii unui program pentru microprocesorul 8086, lucrnd pe un calculator
compatibil IBM PC sunt:
se scrie programul n limbaj de asamblare cu ajutorul unui editor de texte, obinndu-se un
fiier text numit fiier surs care are cel mai adesea extensia .asm;
translatarea fiierului surs n format binar se face cu ajutorul programului asamblor care
semnaleaz eventualele erori de sintax ale programului i genereaz, n cazul n care
programul este corect din punct de vedere sintactic, un fiier n cod binar.
n funcie de necesitile programatorului, asamblorul poate genera dou tipuri de fiiere:
fiiere n cod obiect absolut, direct executabile de ctre unitatea central, care sunt
aezate n memorie la adresa de unde vor fi executate (fiierul generat conine adresele

SISTEME CU MICROPROCESOARE
67
4. Microprocesoarele INTEL 80x86: setul de instruciuni
absolute ale programului) i care vor avea extensia .com sau .exe
fiiere n cod obiect relativ, care conin codul obiect dar adresele sunt relative
(simbolice) i care nu pot fi executate direct dar pot fi puse n biblioteci (pentru o
utilizare ulterioar).
dac s-a obinut fiierul n cod obiect absolut (extensia .com sau .exe) se poate trece la
lansarea n execuie n scopul verificrii i eventual a depanrii funcionrii logice a
acestuia (cu ajutorul unui program de depanare debugger);
dac s-a obinut un fiier n cod obiect relocabil, fiierul poate fi adugat unei biblioteci
(library) cu ajutorul unui program bibliotecar (librarian) sau se poate genera programul n cod
obiect absolut cu ajutorul unui editor de legturi (linkeditor). Editorul de legturi caut n
biblioteci legturile solicitate, adaug n programul n cod obiect absolut secvenele extrase din
biblioteci, semnaleaz eventualele referine nerezolvate i, n cazul n care nu au fost erori,
genereaz codul obiect absolut.










4.2. Precizri privind reprezentarea numerelor n sistemele cu
microprocesoare
Un microprocesor primete, prelucreaz i furnizeaz informaii numai n cod binar,
deoarece semnalele cu care acesta lucreaz pot lua numai dou valori: nivel ridicat i nivel
cobort.
Sistemul de numeraie n baza 2 folosete numai dou valori pentru reprezentarea strii
unei variabile: 0 i 1. Aceste dou valori se mai numesc i cifre binare sau, pe scurt, bii.
n vorbirea uzual exist mai multe cuvinte care sunt asociate acestor dou valori, n
funcie de semnificaia pe care le-o acordm:
Bitul 1 adevrat pornit ridicat setat +5 V setat
Bitul 0 fals oprit cobort resetat 0 V ters
De reinut !
Un program scris n limbaj de asamblare este salvat ntr-un fiier cu
extensia .asm
Programarea n limbaj de asamblare presupune folosirea unui set de
instruciuni specifice fiecrui tip de microprocesor.
Programarea n limbaj de asamblare este superioar programrii n cod
main i inferior programrii ntr-un limbaj de nivel nalt.


SISTEME CU MICROPROCESOARE

68
4. Microprocesoarele INTEL 80x86: setul de instruciuni

Microprocesorul 8086 folosete grupuri de cte 8 sau 16 linii sau semnale logice, crora
le corespund grupuri de 8 bii (octei sau bytes) i respectiv 16 bii (cuvinte sau words). Cnd
ne referim la un octet, trebuie s avem n vedere att numrul de bii ct i ordinea n care
acetia sunt aranjai n cadrul octetului. Poziia fiecrui bit o numim rang i acesta indic
ponderea bitului respectiv n cadrul valorii numerice a octetului. Ponderea unui bit este egal
cu 2
rangul bitului

Ca i n zecimal, rangul cel mai mic (0) i ponderea cea mai mic (2
0
=1) o are ultima
cifr binar din dreapta. Ponderea crete treptat, odat cu rangul, de la dreapta la stnga,
ultima cifr binar avnd rangul maxin (7) i ponderea maxim (2
7
). De aceea, bitul de rang 0
se mai numete i cel mai puin semnificativ bit (LSB - Least Significant Bit), iar bitul de rang
7 poarta numele de cel mai semnificativ bit (MSB - Most Significant Bit).
Exemplu, n cazul octetului 10001101:

Rang 7 6 5 4 3 2 1 0
Pondere 2
7
2
6
2
5
2
4
2
3
2
2
2
1
2
0
Valoare
pondere

128

64

32

16

8

4

2

1
Octet 1 0 0 0 1 1 0 1

Spunem c biii de rang 7, 4, 3, 2 i 0 au valoarea 1, iar biii de rang 6, 5 i 0 au valoarea
0. Valoarea numeric a octetului este egal cu suma tuturor biilor nmulii fiecare cu
ponderea sa, ceea ce este echivalent su suma ponderilor tuturor biilor 1 ai octetului respectiv.
Pentru exemplul considerat, valoarea numeric este 128+8+4+1 = 141 n zecimal.
Aceleai reguli se aplic i pentru cuvinte de 16 bii, cu obsevaia c n acest caz bitul cel
mai semnificativ este cel de rang 15. n plus, cei 16 bii sunt adeseori considerati ca fiind
formai din doi octei: octetul superior sau MSB i cel inferior sau LSB.

Pondere 2
15
2
14
2
13
2
12
2
11
2
10
2
9
2
8
2
7
2
6
2
5
2
4
2
3
2
2
2
1
2
0
Rang 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
octetul superior (MSB) octetul inferior (LSB)

Reprezentarea binar este destul de dificil de folosit, n special pentru numere mari, din
cauza numrului ridicat de cifre binare necesare pentru codificarea lor. O reprezentare mai
compact este reprezentarea n baza 16 sau hexazecimal, care aduce numrul de cifre chiar
sub cel cu care suntem obinuii din reprezentarea zecimal.
Avantajul ei este acela c trecerea de la reprezentarea binar la cea hexazecimal este
imediat, fiind bazat pe gruparea biilor cte 4, ncepnd cu LSB. n mod similar, trecerea de
la hexazecimal la binar se face uor, prin expandarea separat a cifrelor hexazecimale n

SISTEME CU MICROPROCESOARE
69
4. Microprocesoarele INTEL 80x86: setul de instruciuni
grupuri de 4 bii i concatenarea acestora.
Exemplu, irul de bii 1001101001110100 poate fi reprezentat n hexazecimal astfel:

Binar: 1001 1010 0111 0100
Hexazecimal: 9 A 7 4

Pentru a evita confuziile, numerele reprezentate n binar sau n hexazecimal
vor fi urmate de o liter care s indice baza de reprezentare:
B sau b - pentru codificarea binar (1011b =0Bh =10)
H sau h - pentru hexazecimal (1001h =0001 0000 0000 0001b).
O problem important o constituie codificarea adreselor i precizarea lungimii
intervalelor de adrese.
Spre exemplu, aa cum s-a artat anterior, microprocesorul 8086 dispune de o
magistral de adrese format din 16 linii. Cu ajutorul acestor linii pot fi accesate un numr de
2
16
= 65536 de locaii de memorie de 8 bii. Aceasta nseamn c adresa cu valoarea numeric
cea mai mic (0) se poate scrie pe 16 bii n hexazecimal sub forma 0000h, respectiv 16 bii 0.
Adresa maxim este 65535 i poate fi scris n hexazecimal ca FFFFh, respectiv 16 bii 1.
O alt problem o constituie modul de execuie a operaiilor logice de ctre
microprocesorul 8086. Acestea sunt trei operaii cu doi operanzi: AND, OR i XOR i una cu
un singur operand: NOT. Ele se execut separat asupra biilor de pe acelai rang ai
operanzilor, respectiv asupra fiecrui bit separat (NOT), ca n exemplele de mai jos:

01101010 01101010 01101011
11000001 11000001 11000001 01101010
AND -------------- OR -------------- XOR -------------- NOT --------------
01000000 11101011 10101010 10010101

Operaiile aritmetice n baza 2 sau baza 16 se efectueaz n mod similar cu cele din baza
10. Spre exemplu, operaiile aritmetice pe care le poate efectua 8086 sunt cele de adunare
(ADD) i de scdere (SUBstract) cu doi operanzi n baza 2:

01101010 11000100
01000001 01101110
ADD ----------------- ADD ------------------
10101011 100110010

Scderea se efectueaz prin adunarea desczutului cu opusul scztorului:
Desczut - Scztor = Desczut + (-Scztor)
Opusul unui numr n baza 2 se mai numete i complementul fa de 2 (CM2).
Complementul fa de 2 se calculeaz apelnd la complementul fa de 1 (CM1):

SISTEME CU MICROPROCESOARE

70
4. Microprocesoarele INTEL 80x86: setul de instruciuni
CM2 =CM1 +1
01101011 11000101
01000001 11101110
SUB ----------------- SUB ---------------
000101010 111010111
fr mprumut cu mprumut
Scderile din exemplele de mai sus se efectueaz prin parcurgerea urmtorilor pai:
CM1 10111110 00010001
01101011 11000101
CM2 10111111 00010010
ADD --------------- ADD --------------------------
100101010 11010111
cu transport fr transport

Se observ c dac apare transport la adunare nseamn c nu apare mprumut la scdere
i invers.
Operaiile de adunare i scdere se pot face i n baza 16, ntr-un mod asemntor cu
cele din baza 10, dac inem cont c ntre rangurile hexazecimale transportul i mprumutul se
refer la 16 uniti n loc de 10.













4.3. Tipuri de date utilizate n limbaje de asamblare
Tipurile fundamentale de date (Fig. 4.1) pentru Arhitectura Intel 32 sunt:
octet - byte (8 bii);
cuvnt - word (2 octei - 16 bii);
De reinut !
Pentru a evita confuziile, numerele reprezentate n binar sau n
hexazecimal vor fi urmate de o liter care s indice baza de reprezentare:
B sau b - pentru codificarea binar, H sau h - pentru hexazecimal
Octetul este o unitate de msur a informaiei. Pentru msurarea
diferitelor cantiti de informaie se pot folosi multiplii octetului.
Unitile de informaie folosesc ca factor de multiplicare 2
10
=1024:
1 Koctet =2
10
octei = 1024 octei;
1Moctet =2
10
Koctei = 2
20
octei;
1Goctet =2
10
Moctei = 2
20
Koctei = 2
30
octei;
1Toctet =2
10
Goctet=2
20
Moctei=2
30
Koctei=2
40
octei

SISTEME CU MICROPROCESOARE
71
4. Microprocesoarele INTEL 80x86: setul de instruciuni
dublu cuvnt - double word (4 octei - 32 de bii);
quadruplu cuvnt - quad word (8 octei - 64 de bii);
dublu cvadruplu cuvnt - double quad word (16 octei - 128 de bii).












Tipul quad word a aprut n arhitectura Intel odat cu 80486, iar double quad word
odat cu Pentium III cu extensia SSE.
Cel mai puin semnificativ octet ocup cea mai mic adres n memorie (Low), adresa
respectiv fiind i adresa operandului.
Dei tipurile fundamentale de date pentru o arhitectur Intel sunt cele menionate mai
sus, anumite instruciuni suport o interpretare suplimentar a acestor tipuri pentru a permite
operaii asupra unor tipuri numerice de date: ntregi cu sau fr semn i numere n virgul
mobil.
La numerele ntregi fr semn (unsigned integer) au formatul de reprezentare nativ,
coincid cu tipurile fundamentale iar la numerele ntregii cu semn (signed integer), cel mai
semnificativ bit al tipului respectiv, este bitul de semn (de exemplu bitul 15 la signed word
sau bitul 63 la signed quadword), valoarea fiind reprezentat n cod binar complement fa
de 2.
La formatul virgul mobil (floating point), reprezentarea este conform standardului
IEEE 754, existnd trei formate:
simpl precizie (single precision) lungime 32 bii , precizie 24 bii;
dubl precizie (double precision) lungime 64 bii , precizie 53 de bii;
precizie extins (extended double precision) lungime 80 de bii, precizie 64 bii.
Precizia se refer la numrul de bii al mantisei normalizate.
Fig. 4.1. Tipuri de date
Quadword
Doubleword
Word
Byte
Double Quadword




Hi Lo
Hi Lo
Lo Hi
Hi Lo
7 0
0 7 8
15
31 16 15 0
0 31 32 63
0 63 64 127

SISTEME CU MICROPROCESOARE

72
4. Microprocesoarele INTEL 80x86: setul de instruciuni

4.4. Setul de instruciuni al microprocesoarelor INTEL 80x86
4.4.1. Sintaxa unei instruciuni n limbaj de asamblare

O instructiune ocup o linie de program i se compune din mai multe cmpuri, dup
cum urmeaza (parantezele drepte indic faptul c un anumit cmp poate s lipseasc):
[<eticheta>:] [<mnemonica>] [<operand_1>[,<operand_2>]] [;<comentariu>]
<eticheta>- este un nume simbolic (identificator) dat unei locaii de memorie care conine
instruciunea care urmeaz; scopul unei etichete este de a indica locul n care trebuie s se
fac un salt n urma executrii unei instruciuni de salt; eticheta poate fi o combinaie de
litere, cifre i anumite semne speciale (ex: _ ), cu restricia c prima cifr s fie o liter;
<mnemonica>- este o combinaie de litere care simbolizeaz o anumit instruciune (ex:
add pentru adunare, mov pentru transfer, etc.); denumirile de instruciuni sunt cuvinte
rezervate i nu pot fi utilizate n alte scopuri;
<operand_1>- este primul operand al unei instruciuni i n acelasi timp i destinaia
rezultatului; primul operand poate fi un registru, o adres, sau o expresie care genereaz o
adres de operand; adresa operandului se poate exprima i printr-un nume simbolic
(numele dat unei variabile);
<operand_2>- este al doilea operand al unei instruciuni; acesta poate fi oricare din
variantele prezentate la primul operand i n plus poate fi i o constant;
<comentariu>- este un text explicativ care arat inteniile programatorului i efectul
scontat n urma execuiei instruciunii; avnd n vedere c programele scrise n limbaj de
asamblare sunt mai greu de interpretat se impune aproape n mod obligatoriu utilizarea de
comentarii; textul comentariului este ignorat de compilator; comentariul se consider pn
la sfritul liniei curente.
ntr-o linie de program nu toate cmpurile sunt obligatorii: poate s
lipseasc eticheta, operanzii, comentariul sau chiar instruciunea. Unele
instruciuni nu necesit nici un operand, altele au nevoie de unul sau doi
operanzi.
Primul operand este destinaia, iar al doilea este sursa.
Constantele numerice care apar n program se pot exprima n zecimal
(modul implicit), n hexazecimal (constante terminate cu litera 'h') sau n
binar (constante terminate cu litera 'b'). Constantele alfanumerice (coduri
ASCII) se exprima prin litere ntre apostrof sau text ntre ghilimele.

SISTEME CU MICROPROCESOARE
73
4. Microprocesoarele INTEL 80x86: setul de instruciuni









4.4.2. Grupe de instruciuni
Setul de instruciuni este organizat n 6 grupe:
1. instruciuni de transfer, care deplaseaz date ntre memorie sau porturi de intrare/ieire i
registrele procesorului, fr a executa prelucrarea datelor;
2. instruciuni aritmetice i logice, care prelucreaz date n format numeric;
3. instruciuni pentru iruri, specifice operaiilor cu date alfanumerice;
4. instruciuni pentru controlul programului, care n esen se reduc la salturi i la apeluri
de proceduri;
5. instruciuni specifice ntreruperilor, hard i soft;
6. instruciuni pentru controlul procesorului.
n continuare se prezent instruciunile comune majoritii microprocesoarelor i care se
utilizeaza mai des i au importan din punct de vedere al structurii i al posibilitilor
procesorului

A. Instruciuni de transfer presupun o copiere a unui octet sau a unui cuvnt de la o surs la
o destinaie. Destinaia poate fi un registru, o locaie de memorie sau un port de ieire iar
sursa poate fi un registru, o locaie de memorie, constante sau un port de intrare.
Transferurile de tip memorie-memorie nu sunt permise (cu excepia instruciunilor pentru
iruri). La fel nu sunt permise transferurile directe ntre doua registre segment. Ambii
operanzi ai unui transfer trebuie sa aiba aceeai lungime (numar de bii).

A1. Instruciuni de transfer generale: MOV, XCHG, PUSH, POP

Instruciunea MOV (Move Data Transfer date)
De reinut !
Sintaxa unei instruciuni n limbaj de asamblare este:
[<eticheta>:] [<mnemonica>] [<operand_1>[,<operand_2>]] [;<comentariu>]
Primul operand este destinaia, iar al doilea este sursa.
ntr-o linie de program nu toate cmpurile sunt obligatorii: poate s
lipseasc eticheta, operanzii, comentariul sau chiar instruciunea.
Unele instruciuni nu necesit nici un operand, altele au nevoie de unul
sau doi operanzi.

SISTEME CU MICROPROCESOARE

74
4. Microprocesoarele INTEL 80x86: setul de instruciuni
Este cea mai utilizat instruciune de transfer. Sintaxa ei este:
[<eticheta>:] MOV <operand_1>, <operand_2> [;<comentariu>]
unde:
<operand_1>=<registru>|<reg_segment>|<adresa_offset>|<nume_variabila>|<expresie>
<operand_2>=<operand_1>|<constanta>
<registru>=EAX|EBX|.....ESP|AX|BX|....SP|AH|AL|....DL
<expresie>=[[<registru_index>][+<registru_baza>][+<deplasament>]]
aici parantezele drepte marcate cu bold sunt necesare i conin:
<registru_index>=SI| DI |ESI | EDI
<registru_baza>=BX|BP |EBX| EBP
<deplasament>=<constanta>
Urmtoarele operaii nu sunt permise:
sursa i destinaia nu pot fi ambele operanzi n memorie;
nu pot fi folosite registrele FLAGS i IP;
operanii nu pot avea dimensiuni diferite;
registrul CS nu poate apare ca destinaie.
Exemple de instruciuni corecte:
MOV AX, BX
MOV AL, CH
MOV SI, 1234h
Exemple de erori de sintax:
MOV AX, CL ; operanzi inegali ca lungime
MOV AL, 1234h ; dimensiunea constantei este mai mare dect cea a registrului
MOV DS, ES ; dou registre segment

Instruciunea XCHG (Exchange Data Interschimb date)
Aceast instruciune schimb ntre ele coninutul celor doi operanzi.

XCHG <operand_1>, <operand_2>

Exemple:
XCHG AL, BH
XCHG AX,BX
Instruciunea XCHG este util la interschimbarea a dou cantiti aflate n memorie. Dac
operand 1 i operand 2 sunt doi operanzi aflai n memorie, care trebuie interschimbai,
secvena standard de interscmbare (folosind un registru) este:

SISTEME CU MICROPROCESOARE
75
4. Microprocesoarele INTEL 80x86: setul de instruciuni
MOV registru, operand1
XCHG registru, operand2
MOV operand1, registru

Instruciunile PUSH (Push Data Salveaz date n stiv) i POP (Pop Data Ref
date din stiv)
Cele dou instruciuni opereaz n mod implicit cu vrful stivei.
Instruciunea PUSH pune un operand n stiv;
POP extrage o valoare de pe stiv i o depune ntr-un operand.
n ambele cazuri registrul indicator de stiv (SP) se modific corespunztor (prin
decrementare i respectiv incrementare) astfel nct registrul SP s indice poziia curent a
vrfului de stiv.
Sintaxa instruciunilor este:
PUSH <operand_1>
cu semnificaia: copiaz surs (operand 1) n vrful stivei, concret execuia instruciunii
se face dup secvena
(SP) (SP) 2
SS : (SP) +1 : (SP) operand 1
POP <operand_1>
cu semnificaia: copiaz coninutul vrfului stivei n destinaie (operand 1) , concret
execuia instruciunii se face dup secvena
operand 1 SS : (SP) +1 : (SP)
(SP) (SP) +2
Transferul se face numai pe 16 bii. Aceste instruciuni sunt utile pentru salvarea temporar
i refacerea coninutului unor registre. Aceste operaii sunt necesare mai ales la apelul de
rutine i la revenirea din rutine.

A2. Instruciuni de transfer specifice adreselor: LEA, LDS, LES

Aceste istruciuni transfer o adres efectiv ntr-un registru general, sau o adres complet pe
32 de bii ntr-o pereche de registre.

Instruciunea LEA (Load Effective Address ncarc adres efectiv), LDS (Load
Data Segment ncarc DS ) i LES (Load Extra Segment ncarc ES)
Aceste instruciuni permit ncrcarea ntr-un registru a unei adrese de variabile.

SISTEME CU MICROPROCESOARE

76
4. Microprocesoarele INTEL 80x86: setul de instruciuni
Prima instruciune LEA ncarc n registrul exprimat ca prim operand adresa de
offset a variabilei din operandul 2.
Urmtoarele dou instruciuni ncarc att adresa de offset ct i adresa de segment;
LDS ncarc segmentul n registrul DS,
LES ncarc segmentul n registrul ES. Sintaxa ei este:
LEA <operand_1>,<operand _2>
LDS <operand _1>,<operand _2>
LES <operand _1>, <operand _2>
n care operand 1este un registru iar operand 2 este un operand aflat n memorie
Exemple:
LEA SI, Var1 ; SI<=offset(Var1)
LDS BX, text ; DS<=segment(text), BX<=offset(text)
LEA DI, [BX+100] ; DI<=BX+100

A3. Instruciuni de transfer specifice acumulatorului: IN, OUT, XLAT

Instruciunea IN (Input Data Citete date de la port de intrare)
Sintaxa ei este:
IN<operand _1>,<operand _2>
n care operand 1 este registrul AL sau AX iar operand 2 este un port ce poate s fie o
constant cuprins ntre 0...255, fie registrul DX. La variantele noi de procesoare registrele
AL sau AX pot fi substituite cu orice registre de uz general.

Instruciunea OUT (Output Data Scrie date la port de ieire)
Sintaxa ei este:
IN<operand _1>,<operand _2>
n care operand 1 este registrul AL sau AX iar operand 2 este un port de ieire specificat la
fel ca la instruciunea IN.
Instruciunile IN i OUT sunt singurele instruciuni propriu-zise care pot realiza
interaciunea procesorului cu alte dispozitive.

Instruciunea XLAT (Translate - Translateaz)
Instruciunea nu are operanzi iar semnificaia este:
(AL) DS : ((BX) +(AL))
adic se aduce n AL coninutul octetului de la adresa (BX)+(AL). Aceast instruciune
este folosit mpreun cu tabele de translatare utile n conversia unor tipuri de date.

SISTEME CU MICROPROCESOARE
77
4. Microprocesoarele INTEL 80x86: setul de instruciuni

A4. Instruciuni de transfer specifice flagurilor: LAHF, SAHF, PUSHF, POPF

Instruciunea LAHF (Load AH with FLAGS ncarc AH cu FLAGS)
nstruciunea nu are operanzi, iar semnificaia este exprimat de denumire: se ncarc
registrul AH cu partea mai puin semnificativ a registrului de flaguri
AH FLAGS
0...7

Instruciunea SAHF (Store AH into FLAGS Depune AH n FLAGS)
Este perechea instruciunii LAHF, semnificaia fiind:
FLAGS
0...7
AH

Instruciunea PUSHF (Push Flags Salveaz FLAGS n stiv)
Nu are operanzi, iar efectul este plasarea registrului FLAGS n vrful stivei:
(SP) (SP) 2
SS : (SP) +1 : (SP) FLAGS

Instruciunea POPF (Pop FLAGS Reface FLAGS din stiv)
Este perechea instruciunii PUSHF:
FLAGS SS : (SP) +1 : (SP)
(SP) (SP) +2
Cu excepia instruciunilor SAHF i POPF, nici o instruciune de transfer nu
modific indicatorii de condiii


B. Instruciuni aritmetice i logice
A doua categorie important de instruciuni o constituie instruciunile aritmetice i logice.
Rezultatul operaiei este totdeauna depus ntr-unul din operanzi. La instruciunile cu doi
operanzi, rezultatul este depus n primul operand. Instruciunile modific indicatorii de
condiii CF (Flagul Carry - transport), AF (Flagul Auxiliarry Carry transport auxiliar), ZF
(Zero), SF (Flagul Sign - semn), PF (Flagul Parity - paritate), OF (Flagul Overflow
depire), motiv pentru care acestea mai sunt numite i flaguri aritmetice.

B1. Instruciuni aritmetice
Aceste instruciuni efectueaz cele patru operaii aritmetice de baz: adunare, scdere,
nmulire i mprire. Rezultatul acestor instruciuni afecteaz starea indicatorilor de condiie.

SISTEME CU MICROPROCESOARE

78
4. Microprocesoarele INTEL 80x86: setul de instruciuni

Instruciunile ADD i ADC
Aceste instruciuni efectueaz operaia de adunare a doi operanzi, rezultatul plasndu-se n
primul operand. A doua instruciune ADC (ADD with carry Adun cu transport) n plus
adun i coninutul indicatorului de transport CF. Aceast instruciune este util pentru
implementarea unor adunri n care operanzii sunt mai lungi de 32 de bii.
Sintaxa lor este:
ADD <operand_1>,<operand _2>
ADC <operand _1>,<operand _2>

Semnificaia este:
<operand_1> <operand_1>+<operand _2>
<operand_1> <operand_1>+<operand _2>+<CF>
Indicatori de condiii afectai: AF,CF, PF, SF, ZF, OF, (toi)

Instruciunile SUB i SBB
Aceste instruciuni implementeaz operaia de scdere. A doua instruciune, SBB (Subtract
with borrow Scade cu mprumut) scade i coninutul indicatorului CF, folosit n acest caz pe
post de bit de mprumut. Ca i ADC, SBB se folosete pentru operanzi de lungime mai mare.
Sintaxa lor este:
SUB <operand_1>,<operand _2>
SBB <operand _1>,<operand _2>
Semnificaia este:
<operand_1> <operand_1>- <operand _2>
<operand_1> <operand_1>- <operand _2>- <CF>
Indicatori de condiii afectai: AF,CF, PF, SF, ZF, OF, (toi)

Instruciunile MUL i IMUL
Aceste instruciuni efectueaz operaia de nmulire, MUL pentru ntregi fr semn i IMUL
(Integer Multiply nmulete cu semn) pentru ntregi cu semn. De remarcat c la operaiile
de nmulire i mprire trebuie s se in cont de forma de reprezentare a numerelor (cu semn
sau fr semn), pe cnd la adunare i scdere acest lucru nu este necesar. Pentru a evita dese
depiri de capacitate s-a decis ca rezultatul operaiei de nmulire s se pstreze pe o lungime
dubl fa de lungimea operanzilor. Astfel dac operanzii sunt pe octet rezultatul este pe
cuvnt, iar daca operanzi sunt pe cuvnt rezultatul este pe dublu-cuvnt. De asemenea se
impune ca primul operand i implicit i rezultatul s se pstreze n registrul acumulator. De

SISTEME CU MICROPROCESOARE
79
4. Microprocesoarele INTEL 80x86: setul de instruciuni
aceea primul operand nu se mai specific.
Sintaxa lor este:
MUL <operand_2>
IMUL <operand_2>
Semnificaia este:
<acumulator extins> <acumulator>* <operand _2>
n care ambii operanzi se consider numere fr semn
<acumulator extins> <acumulator>* <operand _2>
n care ambii operanzi se consider numere cu semn
Indicatori de condiii afectai: dac extensia acumulatorului (adic AH sau DX) este diferit
de 0, atunci CF i OF sunt 1, astfel CF i OF sunt 0. Restul flagurilor sunt nedefinite.

Instruciunile DIV i IDIV
Aceste instruciuni efectueaz operaia de mprire pe ntregi fr sem i respectiv cu semn.
Pentru a crete plaja de operare se consider c primul operand, care n mod obligatoriu
trebuie s fie n acumulator, are o lungime dubl fa de al doilea operand. Primul operand nu
se specific.
Sintaxa lor este:
DIV <operand_2>
IDIV <operand_2>
Semnificaia este:
<acumulator > <acumulator extins>/ <operand _2>
<extensia acumulatorului > <acumulator extins>MOD<operand _2>
n care ambii operanzi se consider numere fr semn
<acumulator > <acumulator extins>/ <operand _2>
<extensia acumulatorului > <acumulator extins>MOD<operand _2>
n care ambii operanzi se consider numere cu semn iar mprirea se face cu semn.
Indicatori de condiii afectai: toate flagurile sunt nedefinite

Instruciunile INC i DEC
Aceste instruciuni realizeaz incrementarea i respectiv decrementarea cu o unitate a
operandului. Aceste instruciuni sunt eficiente ca lungime i ca vitez. Ele se folosesc pentru
contorizare i pentru parcurgerea unor iruri prin incrementarea sau decrementarea adreselor.
Sintaxa lor este:
INC <operand_1>

SISTEME CU MICROPROCESOARE

80
4. Microprocesoarele INTEL 80x86: setul de instruciuni
DEC <operand_1>
Semnificaia este:
<operand_1> <operand_1>+1
<operand_1> <operand_1>- 1
Indicatori de condiii afectai: AF, PF, SF, ZF, OF, (fr CF)

Instruciunea NEG
Aceast instruciune realizeaz schimbarea semnului unui operand
Sintaxa este:
NEG <operand_1>
Semnificaia este:
<operand_1> 0 - <operand_1>
Indicatori de condiii afectai: AF,CF, PF, SF, ZF, OF, (toi)

Instruciunea CMP
Sintaxa este:
CMP <operand_1>,<operand_2>
Iar semnificaia este execuia unei scderi temporare <operand_2>- <operand_1> fr a se
modific vreun operand, dar cu poziionarea indicatorilor de condiii.
Indicatori de condiii afectai: AF, PF, SF, ZF, OF, (toi)

B2. Instruciuni logice
Aceste instruciuni implementeaz operaiile de baz ale logicii booleene. Operaiile
logice se efectueaz la nivel de bit, adic se combin printr-o operaie logic fiecare bit al
operandului 1 cu bitul corespunztor din operandul al doilea. Rezultatul se genereaz n
primul operand.
Instruciunile AND, OR, NOT i XOR
Aceste instruciuni implementeaz cele patru operaii de baz: I, SAU, Negaie i SAU-
Exclusiv.
Sintaxa este:
AND <operand_1>,<operand_2>
OR <operand_1>, <operand_2>
NOT <operand_1>
XOR <operand_1>,<operand_2>
Semnificaia este:

SISTEME CU MICROPROCESOARE
81
4. Microprocesoarele INTEL 80x86: setul de instruciuni
<operand_1> <operand_1>AND <operand_2>
<operand_1> <operand_1>OR <operand_2>
Instruciunea realizeaz negarea tuturor biilor operand 1, deci calculul complementului fa
de 1
<operand_1> <operand_1>XOR <operand_2>
Indicatori de condiii afectai:, PF, SF, ZF, CF =0, OF =0, AF nedefinit

Se prezint n continuare sub form tabelar exemple de instruciuni caracteristice
familiei INTEL 80X86, fiecare categorie de instruciuni este nsoit de specificarea explicit
a rolului funcional i a indicatorilor de condiii care sunt modificai sau nu, n urma execuiei.
Tab. 4.1 - Instruciuni de transfer. Nu seteaz registrul indicator de stare.
Instruciune Cod proc. Explicaie
MOV AL,15 D0 00 15 AL=15 Copiaz numrul 15 n registrul AL
MOV
BL,[15]
D1 01 15 BL=[15] Copiaz coninutul celulei de memorie
RAM cu adresa [15] n registrul BL
MOV
[15],CL
D2 15 03 [15]=CL Copiaz registrul CL n celula de
memorie RAM cu adresa 15
MOV
DL,[AL]
D3 03 00 DL=[AL] Copiaz coninutul celulei de memorie
RAM a crei adres este coninut n registrul AL
n registrul DL
MOV
[CL],AL
D4 03 00 [CL]=AL Copiaz registrul Al n celula de
memorie RAM a crei adres este coninut n
registrul CL


Tab. 4.2 - Instruciuni aritmetice i logice. Seteaz registrul indicator de stare.
Instruciune Cod proc. Explicaie
ADD AL,BL A0 00 01 AL=AL+BL Adun registrul AL cu registrul BL,
rezultatul fiind pus n registrul AL
SUB BL,CL A1 01 02 BL=BL-CL Scade din registrul BL registrul CL,
rezultatul fiind pus n registrul BL
MUL CL,DL A2 02 03 CL=CL*DL nmulete registrul CL cu registrul
DL, rezultatul fiind pus n registrul DL
DIV DL,AL A3 03 00 DL=DL/AL mparte registrul DL cu registrul AL,
rezultatul fiind pus n registrul DL
MOD AL,BL A6 00 01 AL=AL mod BL mparte registrul AL cu registrul
BL, restul mpririi fiind pus n registrul AL
INC DL A4 03 DL=DL+1 Incrementeaz registrul DL
DEC AL A5 00 AL=AL-1 Decrementeaz registrul AL
AND AL,BL AA 00 01 AL=AL AND BL Se execut operaia logic AND
ntre registrele AL i BL, rezultatul fiind pus n
registrul AL
OR CL,BL AB 02 01 CL=CL OR BL Se execut operaia logic OR ntre

SISTEME CU MICROPROCESOARE

82
4. Microprocesoarele INTEL 80x86: setul de instruciuni
registrele CL i BL, rezultatul fiind pus n registrul
CL
XOR AL,BL AC 00 01 AL=AL XOR BL Se execut operaia logic XOR
ntre registrele AL i BL, rezultatul fiind pus n
registrul AL
NOT BL AD 01 BL = NOT BL Se execut operaia logic NOT
pentru registrul BL, rezultatul fiind pus n registrul
BL
ROL AL 9A 00 Rotate bits left. LSB := MSB Se rotete
coninutul acumulatorului AL (la nivel de bit) spre
stnga
ROR BL 9B 01 Rotate bits right. MSB := LSB Se rotete
coninutul acumulatorului AL (la nivel de bit) spre
dreapta
SHL CL 9C 02 Shift bits left Discard MSB Se deplaseaz biii
acumulatorului AL spre dreapta
SHR DL 9D 03 Shift bits right Discard LSB Se deplaseaz biii
acumulatorului AL spre stnga

Tab. 4.3 - Instruciuni aritmetice i logice imediate. Seteaz registrul indicator de stare.
Instruciune Cod proc. Explicaie
ADD AL,12 B0 00 12 AL=AL+12 Adun registrul AL cu 12 rezultatul
fiind pus n registrul AL
SUB BL,15 B1 01 15 BL=BL-CL Scade din registrul BL 15, rezultatul
fiind pus n registrul BL
MUL CL,3 B2 02 03 CL=CL*3 nmulete registrul CL cu 3, rezultatul
fiind pus n registrul DL
DIV DL,2 B3 03 02 DL=DL/2 mparte registrul DL 2, rezultatul fiind
pus n registrul DL
MOD AL,10 B6 00 10 AL=AL mod 10 mparte registrul AL cu 10, restul
mpririi fiind pus n registrul AL
INC DL A4 03 DL=DL+1 Incrementeaz registrul DL
DEC AL A5 00 AL=AL-1 Decrementeaz registrul AL
AND AL,0F BA 00 0F AL=AL AND 0F Se execut operaia logic AND
ntre registrul AL i 0F, rezultatul fiind pus n
registrul AL
OR CL,F0 BB 02 F0 CL=CL OR F0 Se execut operaia logic OR ntre
registrul CL i F0, rezultatul fiind pus n registrul
CL
XOR AL,AA BC 00 AA AL=AL XOR AA Se execut operaia logic XOR
ntre registrul AL i AA, rezultatul fiind pus n
registrul AL


Tab. 4.4 - Instruciuni de comparare. Seteaz registrul indicator de stare.
Instruciune Cod proc. Explicaie
CMP AL,BL DA 00 01 Seteaz 'Z' dac AL=BL, seteaz 'S' dac AL<BL

SISTEME CU MICROPROCESOARE
83
4. Microprocesoarele INTEL 80x86: setul de instruciuni
CMP BL,13 DA 01 13 Seteaz 'Z' dac BL=13, seteaz 'S' dac BL<13
CMP CL,[20] DA 02 20 Seteaz 'Z' dac CL=[20] celula de memorie
RAM cu adresa 20, seteaz 'S' dac CL<[20]


Tab. 4.5 - Instruciuni de salt. Nu seteaz registrul indicator de stare.
n funcie de dimensiunea i direcia saltului, codul generat este diferit. Instruciunile de salt
modific registrul indicator IP. Saltul maxim posibil este ntre 127 i -128
Instruciune Cod proc. Explicaie
JMP etichet C0 12
C0 FE
Incrementeaz IP cu 12
Decrementeaz IP cu 2 (complement fa de 2)
JZ etichet C1 09
C1 9C
Incrementeaz IP cu 9 dac flag-ul Z este setat
Decrementeaz IP cu 100 dac flag-ul Z este setat
JNZ etichet C2 04
C2 F0
Incrementeaz IP cu 4 dac flagul Z nu este setat
Decrementeaz IP cu 16 dac flagul Z nu este setat
JS etichet C3 09
C3 E1
Incrementeaz IP cu 9 dac flag-ul S este setat
Decrementeaz IP cu 31 dac flag-ul S este setat
JNS etichet C4 04
C4 E0
Incrementeaz IP cu 4 dac flag-ul S nu este setat
Decrementeaz IP cu 32 dac flag-ul S nueste setat
JO etichet C5 09
C5 DF
Incrementeaz IP cu 9 dac flag-ul O este setat
Decrementeaz IP cu 33 dac flag-ul O este setat
JNO
AGAIN
C6 04
C6 FB
Incrementeaz IP cu 9 dac flag-ul O nu este setat
Decrementeaz IP cu 33 dac flag-ul O nu este
setat

Tab. 4.6 - Instruciuni pentru subrutine i ntreruperi. Nu seteaz registrul indicator de stare.
Instruciune Cod proc. Explicaie
CALL 30 CA 30 Salveaz registrul IP n stiv i face salt la adresa
30 (alep subrutin)
RET CB Caut registrul Ip n stiv i face salt la el (revenire
din subrutin)
INT 01 CC 01 Ruleaz codul de la adresa 01 i salveaz adresa de
revenire n stiv
IRET CD Termin tratarea ntreruperii i continu de la
adresa salvat n stiv


Tab. 4.7 - Instruciuni de manipulare a stivei. Nu seteaz registrul indicator de stare.
Instruciune Cod proc. Explicaie
PUSH BL E0 01 Salveaz registrul BL n stiv
POP CL E1 02 Restaureaz registrul CL
PUSHF EA Registrul de stare este salvat n stiv
POPF EB Restaureaz registrul de stare din stiv


Tab. 4.8 - Instruciuni de Intrare/Ieire. Nu seteaz registrul indicator de stare.
Instruciune Cod proc. Explicaie

SISTEME CU MICROPROCESOARE

84
4. Microprocesoarele INTEL 80x86: setul de instruciuni
IN 0C F0 0C Citete data de la portul I/O 0C i o scrie n
registrul AL
OUT 0E F1 0E Trimite coninutul registrului AL la portul I/O 0E

Tab. 4.9 - Instruciuni diverse. Seteaz registrul indicator de stare. CLI i STI seteaz fanionul I.
Instruciune Cod proc. Explicaie
NOP FF Nu se execut nimic timp de un ciclu (ciclu gol)
STI FC Activeaz sistemul de ntreruperi
CLI FD Dezactiveaz sistemul de ntreruperi
ORG 30 Genereaz cod ncepnd cu adresa 30 (pentru
subrutine)
DB sir" ncarc n memorie irul de caractere sir
DB 0D ncarc n memorie numrul hexazecimal 0D
























Test de autoevaluare
1. Care sunt etapele elaborrii unui program pentru microprocesorul
8086?
2. Care este sintaxa unei instructiuni n limbaj de asamblare?
3. Care este setul de instruciuni al microprocesorului INTEL 80x86?
4. Enumerai instruciunile de transfer i rolul acestora.
5. Enumerai instruciunile aritmetice i logice i rolul acestora.
6
Lucrare de verificare la Unitatea de nvare 4
Aceast unitate de nvare se va regsi n lista de subiecte pentru
examen prin urmtoarele subiecte:
1. Instruciunile de transfer;
2. Instruciunile aritmetice i logice.

Lucrare de laborator
Lucrarea aferent acestei uniti de nvare se intituleaz
MICROSISTEM CU MICROPROCESOR 32 BII modul Z3EV
Descriere, construcie si funcionare. Programarea microsistemului
folosind consola.
Obiectivele laboratorului sunt:
Studiul programului Monitor al modulului Z3EV
Studierea coninutului registrelor i a memoriei;
Crearea i rularea unui program asamblare folosind consola;
Studierea semnalelor de baz ale microprocesorului.

SISTEME CU MICROPROCESOARE
85
4. Microprocesoarele INTEL 80x86: setul de instruciuni






















Rspunsuri i comentarii la ntrebrile din testul de
autoevaluare

Rspunsurile la ntrebrile din testul de evaluare se gsesc n textul
unitii de nvare.
Concluzii
Programele n limbaj de asamblare se scriu n mod text pentra ca
apoi sa fie traduse ntr-o form binar corespunztoare limbajului
main;
Limbajul de asamblare este tradus n limbaj main de ctre
assembler;
Limbajele de asamblare nc solicit programatorului cunoaterea
de multe detalii hardware;
Limbajul de asamblare mpreun cu limbajul main formeaz
categoria limbajelor de nivel sczut
Bibliografie
1. Dobriceanu Mircea; Sisteme cu microprocesoare; Notie de curs,
Tipografia Universitii din Craiova, 2012 i format electronic
postat pe http://www.em.ucv.ro
2. Dobriceanu Mircea; Sisteme de achiziie i microprocesoare,
Editura Universitaria Craiova, 2003, p.304, ISBN 973-8043-289-8
3. Musc Gheorghe; Programarea n limbaj de asamblare, Editura
Teora, 1997


SISTEME CU MICROPROCESOARE

86
5. Microprocesoarele INTEL 80x86: tehnici de adresare a memoriei

Unitatea de nvare nr. 5




MICROPROCESOARELE INTEL 80x86
TEHNICI DE ADRESARE A MEMORIEI




Cuprins Pagina
Obiectivele unitii de nvare nr. 5 88
5.1. Tehnici de adresare a memoriei 88
5.1.1. Aspecte generale 88
5.1.2. Moduri de adresare 89
5.2. Ciclurile de baz ale unui microprocesor 93
5.3. Moduri de operare 96
5.4. Execuia instruciunilor 98
Lucrare de laborator 102
Test de autoevaluare 102
Lucrare de verificare unitatea de nvare nr. 5 103
Rspunsuri i comentarii la ntrebrile din testul de autoevaluare 103
Concluzii 103
Bibliografie unitatea de nvare nr. 5 104



SISTEME CU MICROPROCESOARE
87
5. Microprocesoarele INTEL 80x86: tehnici de adresare a memoriei
OBIECTIVELE unitii de nvare nr. 5

Principalele obiective ale Unitii de nvare nr. 5 sunt:












5.1. Tehnici de adresare a memoriei
5.1.1. Aspecte generale
Din analiza formatelor de instruciuni, am observat c pentru a defini complet operaia
de executat este nevoie s cunoatem locul unde sunt amplasai operanzii, adic adresele lor.
n general, un operand se poate afla n registre sau n memoria de lucru.
Adresa unui registru se poate codifica pe un numr redus de bii (uzual 3 sau 4
bii), ce poate face parte chiar din cmpul destinat codului operaie.
Adresa locaiei de memorie unde se afl operandul este precizat ntr-un cmp separat,
ce face parte din corpul instruciunii.
Modul n care operanzi sunt adui la cunotina unitii centrale, calea pe care i se
comunic adresa la care se afl locat operandul cutat, se numete tehnic de adresare.
Exist o gam relativ important de moduri de adresare. n funcie de tipul
microprocesorului, se implementeaz prin setul de instruciuni unele dintre aceste moduri de
adresare. O posibilitate de apreciere a performanelor unui microprocesor este dat i de
modurile de adresare ale acestuia. Cu ct gradul de sofisticare oferit de modurile de adresare
crete, cresc i posibilitile i flexibilitatea programatorului de a realiza programe mai
eficiente, compacte, performante. Totodat, intervin i elemente subiective, legate de opiunile
personale ale programatorului, de experiena i capacitatea sa de a gsi soluia optim pentru
implementarea unei aplicaii date.
n continuare se vor prezenta cele mai ntlnite moduri de adresare, utilizate la diferite
Cunoaterea tehnicilor de adresare a memorie;
Descrierea i exemplificarea modului de aducere din
memoria principal i de execuie a instruciunilor;
Cunoaterea modurilor de lucru ale microprocesorului

SISTEME CU MICROPROCESOARE

88
5. Microprocesoarele INTEL 80x86: tehnici de adresare a memoriei
tipuri de microprocesoare, nsoite de explicaii i exemplificri ale utilizrii lor. Pentru
fiecare mod de adresare se va explica felul n care se obine operandul unei instruciuni a
microprocesorului.











5.1.2. Moduri de adresare

Principalele moduri de adresare ntlnite la majoritatea microprocesoarelor sunt:
Adresarea imediat
n cazul adresrii imediate, operandul apare n instruciune, reprezentnd chiar
operandul necesar pentru execuia instruciunii respective. Aceast valoare este definit nc
din faza de scriere a programului, fiind dat de programator n corpul instruciunii,
reprezentnd n general valori constante, fixe, ale programului. Acest mod de adresare este cel
mai simplu mod de manipulare a unei valori constante de ctre programator, necesitnd un
timp redus de execuie deoarece nu se acceseaz magistrala de date.
Adresarea imediat este util n compararea coninutului unui registru cu o valoare
constant, n vederea lurii unei decizii n program, fr a mai necesita utilizarea de memorie
RAM suplimentar. Principala limitare a acestui mod de adresare este dat de faptul c,
valoarea operandului, fiind coninut n corpul instruciunii, este fix pentru un program dat,
i nu mai poate fi modificat n cursul rulrii acestuia
Exemple:
LD A,55h

; instruciunea ncarc registrul A cu valoarea 55h.
AND 8Eh

; instruciunea execut operaia logic AND ntre registrul A i numrul
8Eh.
ADD BX, 2 ; adun 2 la BX.

De reinut !
Modurile de adresare specific modul n care se calculeaz adresa
operandului aflat n memorie. Se folosesc denumirile de adres de
segment pentru adresa de nceput a segmentului n care se gsete
operandul i adres efectiv pentru deplasamentul operandului n cadrul
segmentului respectiv. Adresa de segment i adresa efectiv formeaz
adresa fizic. Adresa de segment este furnizat de unul din registrele de
segment.

SISTEME CU MICROPROCESOARE
89
5. Microprocesoarele INTEL 80x86: tehnici de adresare a memoriei
Adresarea registru
Adresarea registru se caracterizeaz prin faptul c operandul (operanzii) sunt coninui
n registrele de uz general ale microprocesorului.
Deoarece numrul de registre de uz general ale unui microprocesor este relativ redus,
registrul (registrele) care alctuiesc operanzii instruciunii sunt coninute chiar n corpul
instruciunii. Aceasta permite ca instruciunea s fie scurt i s se execute foarte rapid
(datorit vitezei de execuie sporite, la accesarea registrelor interne ale microprocesorului).
Din acest moti, registrele sunt cel mai bun loc de plasare al variabilelor cel mai des utilizate
Exemple:
MOV AX, BX ;copiaz coninutul registrului BX n registrul AX
MOV DL, AL ;copiaz coninutul registrului AL n registrul DL

Moduri de adresare pentru date aflate sau care doresc s fie plasate n memorie
Exist n principal trei moduri de adresare pentru accesarea datelor n memorie:
adresarea direct, adresarea indirect i adresarea indexat.
Modurile de adresare reprezint, n acest caz, diferite modaliti de a specifica adresa
datei mai precis a ofsetului acesteia.
Ofsetul sau deplasamentul reprezint distana n octei de la nceputul unui segment
pn la locaia de memorie n care este coninut data.
Ofsetul datei din memorie va fi calculat de unitatea de execuie pe baza modului de
adresare specificat n instruciune, iar rezultatul se numete adresa efectiv
De menionat c datele se pot afla sau se doresc a fi plasate n memorie, n segmente de
date (Data Segment) sau stiv (Stack Segment)
Adresa de baz a segmentului de date este coninut n registrul DS, iar cea a
segmentului de stiv curent este coninut n registrul SS.

Adresarea direct
n acest mod de adresare, ofsetul date este specificat direct n instruciune printr-o
valoare numeric sau printr-un nume simbolic.
Exemple:
MOV BL, [50h] ; coninutul locaiei de memorie avnd ofsetul 50h este
; ncrcat n registrul BL (Fig.5.1)

Este mai comod ca ofsetul s se specifice printr-un nume simbolic, reprezentnd numele
unei variabile simple (Fig.5.2)

SISTEME CU MICROPROCESOARE

90
5. Microprocesoarele INTEL 80x86: tehnici de adresare a memoriei
MOV var, BL ; coninutul registrului BL este copiat n locaia de memorie al
; crei ofset este specificat prin variabila var



















Variabilele pot desemna date reprezentate n memorie pe unul sau mai muli octei, dup cum
sunt declarate. Se consider un exemplu n care variabila este de tip cuvnt (doi octei)
(Fig.5.3).
MOV var, BX ; coninutul registrului BX este copiat n memorie n dou locaii
; ncepnt cu ofsetul dat de variabila var









[50h]

DS

BL
ofset
Fig.5.1. Reprezentarea grafic a modului de execuie a instruciuni MOV BL, [50h]
Fig.5.2. Reprezentarea grafic a modului de execuie a instruciuni MOV var, BL
var

DS

BL
ofset
Fig.5.3. Reprezentarea grafic a modului de execuie a instruciuni MOV var, BX
var

DS

BL
ofset

SISTEME CU MICROPROCESOARE
91
5. Microprocesoarele INTEL 80x86: tehnici de adresare a memoriei

Adresarea indirect (prin registru)
n acest caz, ofsetul datei este coninut ntr-un registru (Fig.5.4).
Exemplu:
MOV [BX], AX ; registru AX este ncrcat n coninutul unei locaii de
; memorie, al crei deplasamenteste dat de registrul BX











Adresarea indexat
Ofsetul operandului se obine adunnd coninutul unui registru index (SI sau DI) un cu
deplasament constant. Deplasamentul este specificat fie printr-o constant, fie printr-un
simbol. Acest mod de adresare este util la accesarea elementelor unei tabele.
n exemplul urmtor, coninutul registrului AL este ncrcat la locaia de memorie al
crui ofset este dat de suma dintre deplasamentul depl i coninutul registrului index SI
(Fig.5.5).











Fig.5.4. Reprezentarea grafic a modului de execuie a instruciuni MOV [BX], AX
[BX]

DS

AX
ofset
Fig.5.5. Reprezentarea grafic a modului de execuie a instruciuni MOV [BX], AX
ofset=depl +[SI]

DS

AL
depl
[SI]

SISTEME CU MICROPROCESOARE

92
5. Microprocesoarele INTEL 80x86: tehnici de adresare a memoriei


















5.2. Ciclurile de baz ale unui microprocesor
Microprocesorul este din punct de vedere al modulului de ealonare n timp a
activitilor sale, un dispozitiv sincron: toate operaiile sale interne i externe se ntmpl
sincron cu fronturile semnalului de tact. Semnalul de tact este un semnal electric
dreptunghiular generat extern, care este folosit pentru sincronizarea proceselor din sistem.
Entitatea care nsumeaz toate activitile care se desfoar n timpul unei
perioade a semnalului de ceas (tact) se numete ciclu de tact.
Entitatea care reunete toate activitile care se desfoar pe parcursul
execuiei unei instruciuni a crui cod este locat n memorie, se numete
ciclu instruciune.
De exemplu cea mai simpl instruciune pentru microprocesorul 8086 - SCF - dureaz 4
perioade ale semnalului de tact, iar cea mai complex - 23 de perioade ale semnalului de tact.
Practic fiecare instruciune este descompus n operaii simple (primare) executabile pe
perioada unei perioade a semnalului de tact.
n timp ce durata unui ciclu instruciune variaz de la o clas la alta, durata ciclului de
tact este unic pentru un microcalculator dat, perioada T a semnalului de tact fiind unitatea de
De reinut !
Procedeele prin care se realizeaz n mod concret calculul adreselor
(pentru instruciuni, respectiv operanzi) sunt cunoscute sub numele
generic de moduri de adresare.
n vederea prezentrii modurilor de adresare se va face apel la noiunile
de adres de segment (AS), desemnnd adresa de nceput a segmentului
n care se gsete operandul, respectiv de adres efectiv (AE),
specificnd deplasamentul operandului n cadrul segmentului ce l
conine. Pe baza AS i AE se constituie adresa fizic (AF),
Modurile de adresare ntlnite la majoritatea microprocesoarelor sunt:
Adresarea imediat;
Adresarea registru;
Adresarea direct;
Adresarea indirect (prin registru);
Adresarea indexat.





SISTEME CU MICROPROCESOARE
93
5. Microprocesoarele INTEL 80x86: tehnici de adresare a memoriei
msur a timpului elementar consumat de procesor.
Analiznd modul de execuie al celei de-a doua instruciuni ( SET 0 (IX+59H) ), se
poate observa c cei 23 taci se compun din mai multe activiti care pot fi grupate astfel:
se efectueaz 4 citiri din memorie pentru citirea instruciunii (este o instruciune pe 4
octei);
se efectueaz o citire din memorie de la adresa IX+59H;
se rescrie la aceast adres, octetul n care deja b
0
=0
Se observ c pentru a efectua instruciunea analizat microprocesorul va realiza 6
accese la memorie, din care 5 sunt de tip citire, iar unul de scriere.
Pentru a conferi un plus de modularitate i flexibilitate n execuia instruciunilor, precum
i pentru a uura implementarea hardware-ului din chip, ciclul instruciune a fost subdivizat n
cteva tipuri de activiti procesor intermediare.
Suma activitilor procesor care rezolv o activitate intermediar bine
definit, avnd o finalitate clar, n cursul execuiei unei instruciuni, se
numete ciclu main.
Principalele cicluri main sunt:
citirea i decodificarea codului instruciune (fetch) o instruciune const dintr-o
succesiune de octei (1-4 pentru microprocesorul 8086), din care unul reprezint
obligatoriu codul instruciune. Abia dup citirea i decodificarea acestui cod,
microprocesorul va ti ce are de fcut pentru a executa instruciunea.
citirea unui octet de date (memory read) datele numerice care apar n cmpul unei
instruciuni se citesc din memorie i se depun ntr-unul din registre interni ai
microprocesorului. Operaia fiind mai simpl i deci mai scurt n timp, dect cea
precedent, a dus la realizarea a dou tipuri de ciclu main de citire din memorie
ciclul de citite a codului operaiei (fetch)
ciclul de citire a datelor numerice (read)
scrierea unui octet n memorie (memory write) ciclul main care rezolv operaia se
numete ciclu main de scriere n memorie: write.
Folosind aceste trei cicluri main marea majoritate a instruciunilor unui microprocesor
pot fi implementate. n funcie de microprocesor exist i alte tipuri de cicluri main.
Sintetizm funcionarea microprocesorului astfel:
instruciunile se execut n cicluri de instruciune (IC);
ciclurile instruciune sunt constituite dintr-un numr ntreg de cicluri main (MC);
ciclurile main sunt constituite dintr-un numr ntreg de cicluri de tact (CC).

SISTEME CU MICROPROCESOARE

94
5. Microprocesoarele INTEL 80x86: tehnici de adresare a memoriei
tiind durata real a unul tact microprocesor se poate determina timpul necesar
execuiei fiecrei instruciuni. Aceti timpi de execuie sunt dai n documentaia de firm a
microprocesorului.
tiind timpul de execuie al oricrei instruciuni se poate determina cu precizie timpul
necesar execuiei unui program sau a unui modul din el. Pentru comanda unui proces real
acest lucru este esenial.
Pentru comanda unui proces real se impune respectarea timpilor de lucru impui de
proces. Deci anumite module din program vor trebui optimizate pentru a se ncadra n aceste
limite din punct de vedere al timpului de execuie al instruciunilor componente.


























De reinut !
Ciclul instruciune: Secvena de operaii necesare pentru adresarea,
aducerea i execuia unei instruciuni.
Un ciclu instruciune conine mai multe cicluri main
Ciclul main: intervalul de timp necesar pentru terminarea unei
operaii intermediare: citire memorie, scriere memorie, citire IO,
scriere IO
Ciclul de fetch instruciune = primul ciclu main al oricrui ciclu
instruciune
De obicei un ciclu main implic un transfer al procesorului cu
exteriorul.
Un ciclu main conine mai multe stri UCP.
Stare (timp de ciclu al UCP)
Este timpul UCP (t
UCP
) necesar pentru executarea unei operaii
elementare i bine definite (este inversul frecvenei la care lucreaz
procesorul)
O operaie elementar (micro-operaie) se refer de obicei la un
transfer ntre dou registre
Starea este unitatea de timp de baz pentru msurarea duratei
activitilor UCP

SISTEME CU MICROPROCESOARE
95
5. Microprocesoarele INTEL 80x86: tehnici de adresare a memoriei

5.3. Moduri de operare
Arhitectura Intel suport trei moduri de operare:
protejat;
adres real;
gestiune sistem.
Modul de operare determin ce instruciuni i caracteristici de lucru sunt disponibile precum
i modelele de memorie disponibile.
Modul protejat (Protected Virtual Address Mode - mod adres virtual protejat) este
modul n care toate instruciunile i caracteristicile de prelucrare sunt disponibile,
permind obinerea performanelor maxime. Modul protejat prezint un mecanism
sofisticat pentru protejarea datelor, integritatea sistemului, concurena taskurilor i
gestiunea memoriei incluznd i cea a memoriei virtuale. n modul protejat, n cazul
microprocesorului 80286, spaiul adreselor fizice este mrit de la 1 Moctet la 16 Moctei,
n timp ce spaiul adreselor virtuale a fost mrit la 1 Goctet. n acest mod, programele
folosesc adrese virtuale, translatarea lor n adrese fizice fcndu-se automat pe baza unor
tabele cu descriptori de segmente. Acest mecanism permite implementarea eficient a
sistemelor cu memorie virtual n care utilizatorul vede memoria intern i cea extern ca o
singur memorie. Modul protejat permite implementarea sistemelor multitasking, oferind
cte un segment de stare ataat fiecrui task, care sunt structuri manevrate hardware i
conin strile curente (incluznd toi regitrii) ale taskurilor. Selectoarele acestor segmente
de stare identific unic taskul ataat. De asemenea, este facilitat i comutarea taskurilor,
care poate fi invocat printr-o singur instruciune. Fiecare task din sistem poate avea
propriul lui spaiu de adrese logice, existnd de asemenea un mecanism evoluat pentru
comunicarea ntre taskuri, sincronizarea lor, partajarea memoriei etc.

Modul real (Real Address Mode mod adres real) este cel n care se intr dup
iniializarea microprocesorului. De regul, sub sistemul de operare DOS microprocesorul
se afl n modul real. Specific acestui mod de funcionare este faptul c microprocesorul nu
poate rula dect un singur program odat. Exist posibilitatea rulrii programelor sub
sistemul de operare DOS i n alte moduri ale microprocesorului, dar acest lucru necesit
extensii ale sistemului de operare (existnd n acest sens programe specifice).

Modul gestiune sistem (system management) reprezint o caracteristic unic a
procesoarelor Intel, ncepnd cu I386SL.Acest mod asigur sistemului de operare o

SISTEME CU MICROPROCESOARE

96
5. Microprocesoarele INTEL 80x86: tehnici de adresare a memoriei
modalitate transparent de a implementa funcii specifice platformei de calcul, cum ar fi
gestiunea puterii consumate (power management gestionarea puterii) sau securitatea
sistemului. Trecerea n acest mod se face sub controlul unui semnal extern, printr-o cerere
de ntrerupere extern dedicat. La comutarea n acest mod procesorul comut pe un spaiu
de adrese separat numit SMRAM (System Management RAM) similar modelului adres
real. n acelai timp ce salveaz ntregul context al programului care ruleaz sau al task-
ului curent. Codul specific acestui mod poate fi apoi executat n mod transparent. La
revenirea din acest mod procesorul i restaureaz contextul avut nainte de intrarea n
acest mod.


























De reinut !
Microprocesoarele de tip INTEL, ncepnd cu microprocesorul de tip
80386 au patru moduri de funcionare de baz: modul real, modul
virtual, modul protejat i modul nativ.
Modul real este un mod uniproces, n care se execut un singur proces
(program sau task) la un moment dat (acest mod se ntlne ncepnd
de la 8086).
Modul virtual care permite execuia mai eficient a programelor scrise
pentru procesoarele 8086 i 8088 pe noul procesor de 32 de bii.
Magistrala extern de adrese a fost extins la 32 de bii, spaiul
adreselor fizice fiind astfel de 4 GB. Spaiul adreselor virtuale este de
64 TB. Dimensiunea fiecrui segment nu mai este limitat la 64 KB,
dimensiunea maxim a unui segment fiind de 4 GB (ncepnd de la
80386).
Modul protejat este modul care utilizeaz coninutul registrelor de
segment ca selectori sau pointeri n tabele ale descriptorilor de
segment. Descriptorii furnizeaz adrese de baz de 24 de bii,
permind adresarea unei memorii fizice de pn la 16 MB.
Procesorul dispune de o unitate de gestiune a memoriei virtuale, cu
care poate translata adrese pentru o memorie virtual de 1 GB n
spaiul adreselor fizice de 16 MB (ncepnd de la 80286).
Modul nativ folosete ntreaga putere a microprocesorului. Memoria
virtual permite ca dimensiunea unui program s fie limitat de
spaiul pe disc i nu de dimensiunea memoriei interne. Mecanismele
de protecie sunt destul de puternice pentru a evita accidentele ntre
taskuri sau ntre utilizatori (ncepnd de la 80386).

SISTEME CU MICROPROCESOARE
97
5. Microprocesoarele INTEL 80x86: tehnici de adresare a memoriei


5.4. Execuia instruciunilor
Pentru a pune n eviden o parte din problemele proiectrii unei uniti centrale
eficiente vom considera 4 instruciuni 80x86 reprezentative: MOV, ADD, LOOP i JNZ
(Jump on Not Zero). Pentru c MOV i ADD au fost prezentate anterior ne vom concentra
asupra noilor instruciuni LOOP i JNZ. Ambele instruciuni sunt instruciuni de salt
condiionat.
JNZ testeaz starea indicatorului de condiie Zero din EEFLAGS sau din PSW. Se
execut saltul dac indicatorul de condiii respectiv este 0 sau instruciunea urmtoare
dac indicatorul de condiii este 1. Programul specific instruciunea de destinaie a
saltului prin "distana" dintre instruciunea JNZ i destinaie, exprimat ca un ntreg
cu semn.
LOOP decrementeaz valoarea registrului ECX i transfer controlul unei instruciuni
int (destinaie), tot n domeniul -128 ..+127 fa de instruciunea LOOP, dac dup
decrementare ECX este diferit de zero.
Instruciunile 80x86 nu se execut ntr-un singur ciclu de ceas al procesorului.

Exemple:
A. instruciunea MOV, care este relativ simpl, ar presupune urmtorii pai de execuie:
- preia octetul cu codul instruciunii ( fetch opcod) din memorie;
- actualizeaz EIP pentru a indica urmtorul octetv;
- decodific instruciunea pentru a vedea ce face;
- dac e necesar, preia (fetch) operand de 16 bii din memorie;
- dac e necesar, actualizeaz EIP pentru a indica dincolo de operand;
- dac e necesar, calculeaz adresa operandului (de exemplu EBX+deplasament);
- preia (fetch) operandul;
- memoreaz valoarea preluat ntr-un registru.
Dac alocm cte un ciclu de ceas pentru fiecare din paii de mai sus, o instruciune poate
dura de la 5 pn la 8 cicluri de ceas (trei din paii de mai sus sunt opionali depinznd de
modul de adresare al operanzilor).
B. instruciunea ADD este mai complex ea presupunnd urmtorii pai (se presupune un
ADD reg, reg):
- preia octetul cu codul instruciunii ( fetch opcod) din memorie;
- actualizeaz EIP pentru a indica urmtorul octet;

SISTEME CU MICROPROCESOARE

98
5. Microprocesoarele INTEL 80x86: tehnici de adresare a memoriei
- decodific instruciunea;
- ia valoarea operandului surs (registru) i o trimite la ALU;
- ia valoarea operandului destinaie (registru) i o trimite la ALU;
- comand ALU pentru adunare;
- memoreaz rezultatul napoi n primul operand (registru) ;
- actualizeaz indicatorii de condiie conform rezultatului operaiei de adunare.
Unitatea aritmetic i logic (Arithmetic Logic Unit - ALU) este o component esenial
a oricrui CPU, la nivelul ei executndu-se toate operaiile aritmetice i logice.
Dac operandul surs este n memorie (ADD reg, mem), secvena este mai complicat:
- preia octetul cu codul instruciunii (fetch opcod) din memorie;
- actualizeaz EIP pentru a indica urmtorul octet;
- decodific instruciunea;
- dac e necesar, preia un deplasament pentru a-l utiliza n calculul adresei efective;
- dac e necesar, actualizeaz EIP pentru a indica dincolo de valoarea deplasamentului;
- ia valoarea operandului surs din memorie i o trimite la ALU;
- ia valoarea operandului destinaie (registru) i o trimite la ALU;
- comand ALU pentru adunare;
- memoreaz rezultatul napoi n primul operand (registru) ;
- actualizeaz indicatorii de condiie conform rezultatului operaiei de adunare.

Cea mai complicat secven avem cnd sursa este o constant (ADD mem, const):
- preia octetul cu codul instruciunii ( fetch opcod) din memorie;
- actualizeaz EIP pentru a indica urmtorul octet;
- decodific instruciunea;
- dac e necesar, preia un deplasament pentru a-l utiliza n calculul adresei efective;
- dac e necesar, actualizeaz EIP pentru a indica dincolo de valoarea deplasamentului;
- preia valoarea constant din memorie i o trimite la ALU;
- actualizeaz EIP pentru a indica n memorie dincolo de valoarea constantei;
- ia valoarea operandului destinaie din memorie i o trimite la ALU;
- comand ALU pentru adunare;
- memoreaz rezultatul napoi n primul operand (memorie);
- actualizeaz indicatorii de condiie conform rezultatului operaiei de adunare.
De menionat c sunt i alte forme ale instruciunii ADD cu secvenele lor de faze, dar
cele prezentate sunt cele mai semnificative. Aa cum se vede din exemple pot fi necesare pn
la 11 faze pentru finalizarea instruciunii. Aici este i avantajul conceptului RISC, marea

SISTEME CU MICROPROCESOARE
99
5. Microprocesoarele INTEL 80x86: tehnici de adresare a memoriei
majoritate a procesoarelor RISC avnd una sau dou forme de ADD (registru-registru i
poate constant - registru). De asemenea se vede c din punct de vedere al timpului de
execuie varianta ADD reg, reg este cea mai avantajoas.

C. instruciunea JNZ ar presupune urmtoarea secven de faze:
- preia octetul cu codul instruciunii (fetch opcod) din memorie;
- actualizeaz EIP pentru a indica urmtorul octet;
- decodific instruciunea;
- preia octetul de deplasament pentru a determina distana de salt i-l trimite la ALU;
- actualizeaz EIP pentru a indica urmtorul octet;
- testeaz flagul Zero pentru a vedea dac este 0;
- dac Zero = 0, atunci trimite EIP la ALU;
- dac Zero = 0, comand ALU s adune deplasamentul cu EIP;
- dac Zero = 0, copiaz rezultatul adunrii napoi n EIP.
Se observ c instruciunea JNZ necesit mai puini pai atunci cnd condiia de salt
nu este ndeplinit. Aceasta este tipic pentru toate instruciunile de salt condiionat.
Dac fiecare pas va corespunde unui ciclu de ceas, un JNZ va dura ntre 6 i 9 cicluri
de ceas, funcie de efectuarea sau nu a saltului propriu-zis. Pentru c JNZ nu permite tipuri
diferite de operanzi exist o singur secven de pai (spre deosebire de ADD).

D. instruciunea LOOP poate folosi o secven cum ar fi:
- preia octetul cu codul instruciunii (fetch opcod) din memorie;
- actualizeaz EIP pentru a indica urmtorul octet;
- decodific instruciunea;
- preia valoarea lui ECX i o trimite la ALU;
- comand ALU s decrementeze aceast valoare (ECX) ;
- trimite rezultatul napoi n ECX i seteaz un flag special dac valoarea nu e 0;
- preia octetul de deplasament pentru a determina distana de salt i-l trimite la ALU;
- actualizeaz EIP pentru a indica urmtorul octet;
- testeaz flagul special pentru a vedea dac ECX a fost diferit de zero;
- dac flagul este setat, trimite (copiaz) EIP la ALU;
- dac flagul este setat, comand ALU s adune deplasamentul cu EIP;
- dac flagul este setat, copiaz rezultatul adunrii napoi n registrul EIP.
Dei un anume procesor 80x86 poate s nu execute paii concrei menionai mai sus,
toate instruciunile presupun executarea unei anume secvene de operaii.

SISTEME CU MICROPROCESOARE

100
5. Microprocesoarele INTEL 80x86: tehnici de adresare a memoriei
Fiecare operaie necesit un anumit timp pentru execuie, n general un ciclu de ceas
per operaie sau faz cum vom mai numi paii de mai sus. Este evident c, odat cu numrul
de pai, crete i timpul de execuie al instruciunii. Acesta este motivul pentru care, n
general, instruciunile complexe se execut mai lent dect instruciunile simple.






























De reinut !
Din cele prezentate rezult c execuia unei instruciuni cuprinde
urmtoarele operaii de baz:
extragere cod operaie transferul din memoria de program n
registrul de instruciuni al primului cuvnt din codul main al
instruciunii, cuvnt care conine codul operaiei de executat prin
instruciune;
decodificare analiza cuvntului cod operaie cu circuitele pentru
decodificarea instruciunilor i transferul rezultatului decodificrii la
unitii de control i sincronizare;
transfer operanzi - transferul operanzilor ntre componentele SMPU
(memorie de program, memorie de date, registre, porturi de I/E) n
scopul execuiei instruciunii;
execuie execuia operaiei aritmetice, logice sau de transfer
precizat de codul operaie al instruciunii.
Instruciunile 80x86 nu se execut ntr-un singur ciclu de ceas al
procesorului.
Execuia unei instruciuni ncepe cu extragere cod operaie i
decodificare, continund cu o secven specific de operaii de baz
de transfer operanzi execuie. Astfel este necesar funcionarea
secvenial i sincronizat a microprocesorului, care se obine prin
comanda componentelor sale de ctre unitatea de control i
sincronizare. Viteza de execuie a instruciunilor este funcie de
frecvena semnalului de tact a microprocesorului. n general o
operaie de baz se efectueaz n 3 12 perioade ale semnalului de
tact. Intervalul corespunztor efecturii unei operaii de baz se
numete ciclu main al sistemului. Ciclurile main corespunztoare
unei instruciuni definesc un ciclu de instruciune.

SISTEME CU MICROPROCESOARE
101
5. Microprocesoarele INTEL 80x86: tehnici de adresare a memoriei


































Lucrare de laborator
Lucrarea aferent acestei uniti de nvare se intituleaz
PROGRAMAREA N LIMBAJ DE ASAMBLARE FOLOSIND
SIMULATORUL SMS32: accesul la memorie.
Obiectivele laboratorului sunt:
Studiul memoriei simulatorului;
Tehnici de adresare;
Instruciuni de comparare;
Instruciuni de salt
Test de autoevaluare
1. n ce const adresarea imediat?
2. n ce const adresarea registru?
3. n ce const adresarea direct?
4. n ce const adresarea indirect (prin registru) ?
5. n ce const adresarea indexat?
6. Definii ciclul instruciune, ciclul main, starea.
7. n ce const modul de funcionare real?
8. n ce const modul de funcionare virtual?
9. n ce const modul de funcionare protejat?
10. n ce const modul de funcionare nativ?
11. Care sunt pai de execuie pentru instruciunea MOV?
12. Care sunt pai de execuie pentru instruciunea ADD?
13. Care sunt pai de execuie pentru instruciunea LOOP?
14. Care sunt pai de execuie pentru instruciunea JNZ?


SISTEME CU MICROPROCESOARE

102
5. Microprocesoarele INTEL 80x86: tehnici de adresare a memoriei


































Concluzii
Execuia unei instruciuni presupune urmtoarele etape: extragerea
instruciunii, decodificarea, extragerea operanzilor, execuia operaiei
i salvarea rezultatului. n timpul execuiei instruciunii
microprocesorul comunic cu celelalte componente ale sistemului
(memorie, interfee de intrare/ieire) prin intermediul magistralei.
Pe magistral se transfer instruciuni i date, care se pastreaz n
locaii de memorie i porturi de intrare/ieire. Pentru vehicularea
informaiilor se utilizeaz semnale de adresa i semnale de comand.
Transferul de informaii ntre procesor i celelalte componente cuplate
prin intermediul magistralei se realizeaz prin cicluri main. Un ciclu
main poate sa dureze un numar variabil de perioade de ceas. Pe
durata unui ciclu main se transfe o singur dat (octet, cuvnt sau
dublu-cuvnt) a carei surs sau destinaie se afl la adresa specificat
prin semnalele de adres i de comand.
Lucrare de verificare la Unitatea de nvare 5
Aceast unitate de nvare se va regsi n lista de subiecte pentru
examen prin urmtoarele subiecte:
1. Tehnici de adresare a memoriei;
2. Ciclurile de baz ale unui microprocesor;
3. Moduri de operare;
4. Execuia instruciunilor: MOV i ADD;
5. Execuia instruciunilor: LOOP i JNZ.
Rspunsuri i comentarii la ntrebrile din testul de
autoevaluare
Rspunsurile la ntrebrile din testul de evaluare se gsesc n textul
unitii de nvare.


SISTEME CU MICROPROCESOARE
103
5. Microprocesoarele INTEL 80x86: tehnici de adresare a memoriei


Bibliografie
1. Dobriceanu Mircea; Sisteme cu microprocesoare; Notie de curs,
Tipografia Universitii din Craiova, 2012 i format electronic
postat pe http://www.em.ucv.ro
2. Dobriceanu Mircea; Sisteme de achiziie i microprocesoare,
Editura Universitaria Craiova, 2003, p.304, ISBN 973-8043-289-8
3. Rotar Dan; Arhitectura sistemelor de calcul, Editura ALMA
MATER, 1997


SISTEME CU MICROPROCESOARE

104
6. Microprocesorul INTEL 80x86: lucrul cu stive i subrutine

Unitatea de nvare nr. 6




MICROPROCESOARELE INTEL 80x86
LUCRUL CU STIVE I SUBRUTINE




Cuprins Pagina
Obiectivele unitii de nvare nr. 6 106
6.1. Lucrul cu stiva 106
6.1.1. Aspecte generale 106
6.1.2. Instruciuni pentru lucru cu stiva 109
6.2. Lucrul cu subrutine 111
6.2.1. Aspecte generale 111
6.2.2. Instruciuni pentru lucru cu subrutine 112
6.2. 3. Transferul de parametri ntre program i subrutine 116
Lucrare de laborator 116
Test de autoevaluare 117
Lucrare de verificare unitatea de nvare nr. 6 117
Rspunsuri i comentarii la ntrebrile din testul de autoevaluare 117
Concluzii 117
Bibliografie unitatea de nvare nr. 6 118


SISTEME CU MICROPROCESOARE
105
6. Microprocesorul INTEL 80x86: lucrul cu stive i subrutine
OBIECTIVELE unitii de nvare nr. 6

Principalele obiective ale Unitii de nvare nr. 6 sunt:











6.1. Lucrul cu stiva
6.1.1. Aspecte generale

Stiva este o zon de memorie liniar, format din locaii de memorie amplasate la
adrese consecutive, cu acces pe la un singur capt (top of stack vrful stivei), prin
intermediul registrului SP (Stack Pointer indicator al vrfului stivei). Deoarece funcionarea
stivei implic att operaii de citire (extragere), ct i de scriere (depunere) n stiv, stiva
trebuie organizat ntr-o zon de memorie de tip RAM (Fig. 6.1).











Rolul stivei este acela de a furniza o cale comod de a stoca temporar informaii (date
sau adrese) n memorie fr a reine pentru fiecare, adresa exact la care sunt stocate. Ceea ce
trebuie reinut este doar ordinea n care informaiile sunt stocate, deoarece ele vor fi extrase
din stiv n ordinea invers celei n care au fost depuse.
Practic putem considera stiva ca un grup de registre organizai ntr-o structura LIFO
(Last In First Out - Ultimul Intrat Primul Ieit). Deci dac adugm o nregistrare n stiv
Cunoaterea structurii, rolului i a instruciunilor pentru
lucrul cu stiva
Cunoaterea rolului i a instruciunilor pentru lucrul cu
subrutinele
Fig.6.1. Stiva microprocesorului
Memorie RAM
Vrful iniial al stivei (stiva goal)
Stiva crete
SP Vrful curent al stivei
Sensul cresctor al
adreselor

SISTEME CU MICROPROCESOARE

106
6. Microprocesorul INTEL 80x86: lucrul cu stive i subrutine
aceasta se va aduga peste precedentele. Pentru a extrage o anumit nregistrare din stiv
trebuie extrase mai nti toate nregistrrile depuse dup aceasta i deci care se afl deasupra
acesteia (Fig. 6.2).















Registrul SP conine ntotdeauna adresa de nceput (vrful stivei). La fiecare depunere
n stiv valoarea registrului SP este incrementat pentru a corespunde acestei noi nregistrri.
Stiva este o zon de memorie, care poate fi definit folosind aceleai directive de
asamblare ca i n cazul altor variabile, cu o singur meniune: dac pentru variabilele
obinuite se marcheaz printr-o etichet adresa de nceput a zonei de memorie rezervate
(adresa mai mic), pentru stiv se marcheaz adresa de dup cea a ultimei locaii rezervate,
care va constitui vrful stivei i va iniializa registrul SP. Motivul l constituie faptul c stiva
crete n sensul descresctor al adreselor.

De ce sunt necesare stivele ?
Stivele sunt strict necesare n lucrul cu subrutine (proceduri i funcii), cnd trebuie eliberate
registrele interne n vederea apelrii unei subrutine care va ncrca registrele cu propriile sale
date. Coninutul registrelor este ns necesar la revenirea din subrutin. De aceea eliberarea
registrelor se face prin salvarea lor n stiv, ntr-o anumit ordine i refacerea lor din stiv la
revenirea din subrutin n programul apelant.


C000h
BFFFh
BFFEh
BFFDh
BFFCh
BFFBh
SP=C000h C000h
BFFFh
BFFEh
BFFDh
BFFCh
BFFBh
SP=BFFEh
C000h
BFFFh
BFFEh
BFFDh
BFFCh
BFFBh
SP=BFFEh
C000h
BFFFh
BFFEh
BFFDh
BFFCh
BFFBh
SP=BFFCh
Depunere n stiv
Extragere din stiv
Extragere din stiv
Depunere n stiv
Fig.6.2. Depunerea i extragerea din stiv

SISTEME CU MICROPROCESOARE
107
6. Microprocesorul INTEL 80x86: lucrul cu stive i subrutine













































De reinut !
Stivele sunt formate n memoria RAM i sunt adresabile cu registrul
segment SS si registrul pointer SP. Registrul SS conine adresa de
baz a stivei iar SP conine adresa relativ (deplasamentul sau offset-
ul) fa de baz, a vrfului stivei.
Un program poate utiliza mai multe stive, fiecare cu lungimea
maxim de 64 KB. Stivele au locaii de 16 bii i funcioneaz ca liste
LIFO (Last In First Out), adic ultimul operand introdus n stiv este
primul care poate fi extras.
Un cuvnt este salvat n stiv la adresa relativ (SP-2); citirea din
stiv se face prin copiere de la adresa (SP), dup care se face
actualizarea registrului pointer SP: (SP+2). Locaiile din stiv sunt de
16 bii i ca urmare operanzii care se introduc i se extrag n/din stiv
sunt cuvinte de 16 bii iar adresele a dou locaii consecutive difer
prin 2 ( n fiecare locaie sunt doi octei).
Se pot introduce n stiv operanzi de 16 bii din registre cu excepia
lui CS i operanzi de 16 bii din memorie. Extragerea din stiv se face
prin copiere ntr-un registru de 16 bii, cu excepia lui CS, sau n
memorie.
Salvarea n stiv se face cu instruciunea PUSH iar extragerea din
stiv cu POP. Decrementarea registrului SP la introducere i
incrementarea sa la scoatere se fac automat. Programatorul trebuie s
fixeze doar baza stivei n SS i limita superioar a stivei, n SP. Toate
operaiile cu stiva se realizeaz apoi foarte simplu, prin instruciunile
PUSH si POP. Adresele la care se fac transferurile se calculeaz
automat i nu prezint nici un interes. Tot ceea ce conteaz este
ordinea n care se face introducerea n stiv, deoarece la extragere
aceasta se inverseaz.


SISTEME CU MICROPROCESOARE

108
6. Microprocesorul INTEL 80x86: lucrul cu stive i subrutine

6.1.2. Instruciuni pentru lucru cu stiva

Instruciunea PUSH (Push Data Salveaz date n stiv)
Sintaxa instruciunii este:
PUSH <operand_2>
n care operand 2 (sursa) este un operand pe 16 bii (registru general de 16 bii, registru de
segment sau locaie de memorie), iar semnificaia este copiaz operand 2 n vrful
stivei. Concret execuia instruciunii se face dup secvena:
(SP) (SP) 2
SS :((SP) +1 : (SP)) operand 2
ceea ce nseamn c se decremnteaz SP cu 2 i n octeii de la adresele (SP) +1 i (SP)
din segmentul de stiv se copiaz operandul 2 (sursa).
Copierea respect regula de memorare a cantitilor pe mai muli octei i anume partea
mai puin semnificativ (partea low) se memoreaz la adrese mici.
O exprimare detailat a instruciunii este:
(SP) (SP) 2
SS : ((SP) +1) high (operand 2)
SS : ((SP)) low (operand 2)
Exemple:
PUSH BX
PUSH ES
PUSH [BX]
PUSH [BX+8]

Instruciunea POP (Pop Data Ref date din stiv)
Sintaxa instruciunii este:
POP <operand_1>
n care operand 1 (destinaia) este un operand pe 16 bii (registru general de 16 bii,
registru de segment sau locaie de memorie), iar semnificaia este copiaz coninutul
vrfului stivei n operand 1. Registrul CS nu poate apare ca destinaie. Concret execuia
instruciunii se face dup secvena:
operand 1 SS : ((SP) +1 : (SP))
(SP) (SP) +2
ceea ce nseamn c se transfer octeii de la adresele (SP) +1 i (SP) din segmentul de
stiv n operandul 1 (destinaie) i apoi se incrementeaz SP cu 2.

SISTEME CU MICROPROCESOARE
109
6. Microprocesorul INTEL 80x86: lucrul cu stive i subrutine
O exprimare detailat a instruciunii este:
high (operand 1) SS : ((SP) +1)
low (operand 1) SS : ((SP))
(SP) (SP) +2
Exemple:
POP BX
POP ES
POP ES: [DI]
POP [BP +5]

Din analiza instruciunilor PUSH i POP reiese c o secven de refaceri ale unor cantiti
salvate n stiv ( de exemplu coninutul unor registre) trebuie scris n ordine invers.
Exemplu:
Secvena de salvare este
PUSH AX
PUSH BX
PUSH CX
Secvena de refacere trebuie s fie
POP CX
POP BX
POP AX
Dac registrele de mai sus conin valorile AX =2345h, BX =6789h, CX =ABCDh, iar
registrul SP conine nainte de salvri valoarea 1122h, atunci imaginea stivei va fi (Fig. 6.3).












Fig.6.3. Utilizarea instruciuni PUSH
1122
1120
1118
1116
SP inial
SP dup PUSH AX
SP dup PUSH BX
SP dup PUSH CX
45
23
89
67
CD
AB

SISTEME CU MICROPROCESOARE

110
6. Microprocesorul INTEL 80x86: lucrul cu stive i subrutine

















6.2. Lucrul cu subrutine
6.2.1. Aspecte generale
Setul de instruciuni al microprocesoarelor poate conine i instruciuni pentru lucrul cu
subrutine.
Lucrul cu subrutine s-a dezvoltat din necesitatea de a utiliza ntr-un program aceeai
secven de instruciuni n mod repetat. Pentru evitarea unei astfel de repetiii secvena de
instruciuni este tratat ca o parte distinct a programului la care se face salt de cte ori este
nevoie n program de aceasta.
Deoarece n timpul execuiei unei subrutine coninutul registrelor din procesor se
altereaz (i modific valoarea), dac la revenirea din subrutin coninutul acestora nu este
restaurat, programul va folosi date eronate.
Pentru a evita acest lucru registrele care trebuie s-i pstreze coninutul vor fi salvai n
stiv i restaurai din aceasta.
La apelul succesiv a mai multor subrutine, adresele de revenire ale acestora sunt depuse
n stiv n ordine invers a succesiunii salturilor (ultima adres de revenire de la ultima
subrutin apelat este n vrful stivei, iar cea mai veche este cea mai deprtat, spre baza
stivei).
De reinut !
La operaiile cu stiva trebuie avut grije ca o secven de refacere s
aduc indicatorul SP la valoarea de dinainte de secvena de salvare.
Acest lucru impune ca numrul operaiilor POP s coincid cu cel al
operaiilor PUSH
Nu este indicat s se modifice explicit locaiile aflate n josul stivei,
adic la valori mai mari sau egale dect valoarea curent a registrului
SP. n aceste locaii se pot afla informaii a cror alterare ar putea
afecta execuia programului.
PUSCH i POP se mai pot folosi la transferul indirect al unor registre:
PUSH DS
POP ES
copiaz conimutul registrului DS n ES, lsnd indicatorul SP
neschimbat.


SISTEME CU MICROPROCESOARE
111
6. Microprocesorul INTEL 80x86: lucrul cu stive i subrutine
Ca mod de lucru pentru apelul unei subrutine se poate respecta algoritmul:
se apeleaz subrutina cu comanda CALL, automat n stiv este pus adresa de revenire;
salvm n stiv registrele care ne intereseaz;
se execut instruciunile din corpul subrutinei;
se restaureaz registrele salvate;
se revine din subrutin cu instruciunea RET.













6.2.2. Instruciuni pentru lucru cu subrutine
Procedurile se definesc n textul surs astfel:
nume_proc PROC [FAR | NEAR]
.
.
.
RET
nume_proc ENDP
unde nume_proc este numele procedurii, iar parametrii FAR sau NEAR (opionali)
indic tipul procedurii.
Procedurile sunt de dou tipuri: FAR i NEAR. O procedur FAR poate fi apelat i din
alte segmente de cod dect cel n care este definit, pe cnd o procedur NEAR poate fi
apelat numai din segmentul de cod n care este definit.
Dac nu se precizeaz parametrii FAR sau NEAR, tipul procedurii este dedus
dindirectivele simplificatede definire a segmentelor (funcie de modelul de memorie folosit).
De reinut !
Subrutinele se utilizeaz pentru o structurare i organizare mai bun a
programelor.
Subrutinele reprezint poriuni de program utilizate frecvent pentru a
efectua anumite operaii specifice.
Subrutinele sunt apelate din diferite locuri ale programului, evitndu-
se astfel repetarea unei aceleai secvene de instruciuni.
O subrutin poate apela o alt subrutin, ceea ce impune utilizarea
unui mecanism specific pentru a se putea cunoate adresa de revenire,
la terminarea execuiei unei subrutine, la punctul din program de unde
se fcuse apelarea ei.



SISTEME CU MICROPROCESOARE

112
6. Microprocesorul INTEL 80x86: lucrul cu stive i subrutine
n mod corespunztor, exist apeluri de tip FAR, respectiv NEAR, precum i
instruciuni de revenire de tip FAR, respectiv NEAR.
Instruciunea RET (Return) provoac revenirea n programul apelat. Se poate scrie o
instruciune return explicit n formele RETN (Return Near) sau RETF (Return Far) sau RET
caz n care tipul instruciunii Return este dedus din tipul procedurii (FAR sau NEAR).

Instruciunea CALL (Apel de procedur)
Poate avea una din formele:
CALL nume_proc
CALL FAR PTR nume_proc
CALL NEAR PTR nume_proc
n primul caz, tipul apelului este dedus din tipul procedurii, iar n celelalteeste specificat
explicit (Far sau NEAR).
Tipul apelului trebuie s coincid cu tipul procedurii i cu tipul instruciunilor Return
din interiorul procedurii, altfel se ajunge la funcionri necorespunztoare ale programului.
Semnificaia instruciunii CALL este urmtoarea:
CALL de tip NEAR
(SP) (SP) - 2
SS: ((SP) +1) : (SP)) (IP)
(IP) ofsetul primei instruciuni din procedur
Descrierea prezentat mai sus pune n eviden c se salveaz n stiv contorul program
curent, asemntor instruciunii PUSH (se decrementeaz registrul SP cu 2 i se nscrie
coninutul lui IP n vrful stivei). Registrul IP conine totdeauna adresa instruciunii care
urmeaz (n memorie), dup instruciunea care se execut n mod curent. Practic se salveaz
n stiv adresa instruciunii de dup instruciunea CALL. Aceast adres este numit adres de
revenire.
Dup aceast salvare, se ncarc n IP adresa (deplasamentul) primei instruciuni din
procedur, ceea ce nseamn un transfer al controlului ctre procedur.
De reinut c n momentul intrrii n procedur, n vrful stivei exist adresa de
revenire. Aceast adres nu trebuie modificat deoarece revenirea n programul apelat nu mai
este posibil.
De observat c n secvena de apel a procedurii, registrul CS nu se modific, ceea ce
nseamn c se rmne n acelai segment de cod.



SISTEME CU MICROPROCESOARE
113
6. Microprocesorul INTEL 80x86: lucrul cu stive i subrutine

CALL de tip FAR
(SP) (SP) - 2
SS: ((SP) +1) : (SP)) (CS)
(SP) (SP) - 2
SS: ((SP) +1) : (SP)) (IP)
(CS) adresa de segment a primei instruciuni din procedur
(IP) ofsetul primei instruciuni din procedur
Ceea ce este diferit fa de apelul de tip NEAR este faptul c salveaz adresa complet
de revenire (pe 32 de bii), prin plasarea n stiv att a registrului IP ct i a registrului CS.
Similar, transferul contorului se face prin modificarea explicit a perechi de registre (CS:IP)
Instruciunea CALL de tip FAR este aceea instruciune care modific explicit registrul CS.
Instruciunea RET (Return revenire din procedur)
Poate avea una din formele:
RETN [N]
RETF [N]
RET [N]
n care parantezele drepte pun n eviden ca N este o constant intreag opional.
n cea de-a treia form tipul instruciunii (NEAR sau FAR) este dedus din tipul procedurii.
Semnificaia este urmtoarea:
Return de tip NEAR
(IP) SS: ((SP) +1) : (SP))
(SP) (SP) +2
[(SP) (SP) +N]
Rezult din semnificaia instruciunii Return c se reface registrul (IP), prin copierea vrfului
stivei i incremetarea registrului SP cu 2. Dac SP are aceiai valoare ca la intrarea n
procedur i coninutul stivei nu a fost alterat n timp, atunci se copiaz n IP adresa de
revenire, ceea ce provoac transferul controlului la instruciunea care urmeaz instruciunii
CALL care a provocat apelul procedurii. Dac n formatul instruciunii RET exist constanta
opional N, atunci se adun aceast constant la registrul SP.
Return de tip FAR
(IP) SS: ((SP) +1) : (SP))
(SP) (SP) +2
(CS) SS: ((SP) +1) : (SP))
(SP) (SP) +2

SISTEME CU MICROPROCESOARE

114
6. Microprocesorul INTEL 80x86: lucrul cu stive i subrutine
[(SP) (SP) +N]
Se reface din stiv perechea de registre (CS:IP), cu actualizarea registrului SP i dac este
prezent constanta N, se adun N la SP.

Principalele caracteristici ale subrutinelor:
o subrutin este o succesiune de instruciuni cu unul sau mai multe puncte de intrare
etichetate i cu unul sau mai multe puncte de ieire;
realizeaz o anumit funcie: operaii I/O, conversii al formatului datelor, operaii
aritmetice n virgul fix sau mobil, etc.;
poate fi apelat ori de cte ori este nevoie;
pentru ea se aloc memorie numai o singur dat;
la terminare trebuie s se rentoarc n programul apelant, indiferent de locul de unde este
apelat;
poate primi parametri din programul apelant i i poate furniza rezultate acestuia prin
registre, prin stiv sau prin locaii fixe de memorie;
registrele modificate de subrutin trebuie s fie cunoscute programului apelant, care trebuie
s ia msurile necesare pentru salvarea informaiilor care trebuie pstrate.
Pentru pstrarea vizibilitii codului surs fiecare subrutin trebuie documentat la
definire, precizndu-i-se:
numele i funcia ndeplinit;
modul n care sunt primii parametrii de intrare;
modul n care rezultatele sunt returnate programului apelant;
registrele modificate n cadrul subrutinei.












De reinut !
Este important de reinut c instruciunile CALL i RET sunt instruciuni
pereche: ele salveaz, respectiv refac adresa de revenire. Pentru c
mecanismul de apel/revenire s funcioneze corect, trebui ndeplinite
condiiile:
tipul instruciunii CALL i tipul instruciunii RET trebuie s coincide
(FAR sau NEAR);
registrul SP din momentul execuiei instruciunii RET s aibe aceeai
valoareca la intrarea n procedur (s indice adresa de revenire);
adresa de revenire salvat n stiv s nu fi fost alterat de ctre
procedur.


SISTEME CU MICROPROCESOARE
115
6. Microprocesorul INTEL 80x86: lucrul cu stive i subrutine

6.2. 3. Transferul de parametri ntre program i subrutine
Deoarece, n general, subrutinele execut operaii asupra unor parametri, acetia trebuie
transmii subrutinelor de ctre programul principal i subrutinele transmit programului
principal rezultatul obinut.
Acest transfer de parametri se poate face:
prin intermediul registrelor - este o metod foarte simpl dar numrul de parametrii este
limitat de numrul registrelor;
prin intermediul memoriei RAM este o metod complex care necesit cunoaterea
precis a adreselor parametrilor, dar permite transmiterea unui numr nelimitat de
parametri;
transferul parametrilor prin intermediul stivei este cea mai folosit metod, evitndu-se
calculul adreselor care le impune folosirea memoriei RAM i permind un numr foarte
mare de parametri.
n acest caz subrutina folosete anumite date, din locaii de memorie specificate, ale
cror valori vor fi stabilite naintea apelului subrutinei.
De exemplu n cazul unei subrutine de adunare a dou numere, acestea trebuie luate din
locaii de memorie specificate. nainte de fiecare apel n aceste locaii de memorie se ncarc
cele dou numere ce trebuie adunate.















Lucrare de laborator
Lucrarea aferent acestei uniti de nvare se intituleaz
PROGRAMAREA N LIMBAJ DE ASAMBLARE FOLOSIND
SIMULATORUL SMS32: utilizarea stivei i lucrul cu subrutine.
Obiectivele laboratorului sunt:
Studiul stivei simulatorului;
Instruciuni pentru lucru cu stiva;
Lucrul cu subrutine;
Instruciuni pentru lucru cu subrutine;
Transferul de parametri ntre program i subrutine

SISTEME CU MICROPROCESOARE

116
6. Microprocesorul INTEL 80x86: lucrul cu stive i subrutine


































Test de autoevaluare
1. Care este structura i rolul stivei?
2. De ce sunt necesare stivele ?
3. Care sunt instruciunile pentru lucrul cu stiva?
4. Care este rolul subrutinei?
5. Care sunt principalele caracteristici ale subrutinelor?
6. Care sunt instruciunile pentru lucrul cu subrutinele?

Rspunsuri i comentarii la ntrebrile din testul de
autoevaluare
Rspunsurile la ntrebrile din testul de evaluare se gsesc n textul
unitii de nvare.
Concluzii

1. Stivele sunt strict necesare n lucrul cu subrutine (proceduri i
funcii), cnd trebuie eliberate registrele interne n vederea apelrii
unei subrutine care va ncrca registrele cu propriile sale date.
2. Subrutina este o succesiune de instruciuni cu unul sau mai multe
puncte de intrare etichetate i cu unul sau mai multe puncte de
ieire, realizeaz o anumit funcie i poate fi apelat ori de cte ori
este nevoie iar la terminare trebuie s se rentoarc n programul
apelant, indiferent de locul de unde este apelat

Lucrare de verificare la Unitatea de nvare 6
Aceast unitate de nvare se va regsi n lista de subiecte pentru
examen prin urmtoarele subiecte:
1. Lucrul cu stinva: structur, instruciuni.
2. Lucrul cu subrutinele: caracteristici, instruciuni.


SISTEME CU MICROPROCESOARE
117
6. Microprocesorul INTEL 80x86: lucrul cu stive i subrutine

















Bibliografie
1. Dobriceanu Mircea; Sisteme cu microprocesoare; Notie de curs,
Tipografia Universitii din Craiova, 2012 i format electronic
postat pe http://www.em.ucv.ro
2. Dobriceanu Mircea; Sisteme de achiziie i microprocesoare,
Editura Universitaria Craiova, 2003, p.304, ISBN 973-8043-289-8
3. Musc Gheorghe; Programarea n limbaj de asamblare, Editura
Teora, 1997
4. Rotar Dan; Arhitectura sistemelor de calcul, Editura ALMA
MATER, 1997


SISTEME CU MICROPROCESOARE

118
7. Microprocesoarele INTEL 80x86: sistemul de ntreruperi

Unitatea de nvare nr. 7




MICROPROCESOARELE INTEL 80x86
SISTEMUL DE NTRERUPERI




Cuprins Pagina
Obiectivele unitii de nvare nr. 7 120
7.1. Aspecte generale 120
7.2. ntreruperi software 123
7.3. ntreruperi hardware 125
7.4. Controlerul de intreruperi I8259A 127
Lucrare de laborator 129
Test de autoevaluare 129
Lucrare de verificare unitatea de nvare nr. 7 129
Rspunsuri i comentarii la ntrebrile din testul de autoevaluare 129
Concluzii 130
Bibliografie unitatea de nvare nr. 7 130



SISTEME CU MICROPROCESOARE
119
7. Microprocesoarele INTEL 80x86: sistemul de ntreruperi

OBIECTIVELE unitii de nvare nr. 7

Principalele obiective ale Unitii de nvare nr. 7 sunt:














7.1. Aspecte generale
Prin ntrerupere nelegem fenomenul la apariia cruia microprocesorul, la cererea unui
eveniment extern, abandoneaz programul n curs de rulare, deservete evenimentul extern,
executnd un program dedicat, dup care se rentoarce la programul abandonat, relundu-i
execuia din punctul n care ea fusese suspendat.
Se prezint o clasificare a ntreruperile ce se poate realiza dup mai multe criterii
(Fig.7.1)















Cunoaterea principiului de funcionare al unui sistem de
ntreruperi;
Analiza sistemului de ntreruperi al familiei de procesoare
Intel 80x86;

ntreruperi

Hardware

Software

Externe

Interne

Utilizator

Sistem

Nedezactivabile

Dezactivabile

BIOS

DOS
Fig. 7.1. Clasificarea ntreruperilor

SISTEME CU MICROPROCESOARE

120
7. Microprocesoarele INTEL 80x86: sistemul de ntreruperi

Dup cum se observ din clasificarea prezentat ntreruperile sunt de tip software, care
se activeaz prin execuia instruciunea INT, INTO folosite n cadrul programului, i
hardware care se activeaz de ctre un eveniment extern provocate de semnale electrice care
se aplic pe intrrile de ntreruperi INT (dezactivabile sau mascabile) i NMI (nedezactivabile
sau nemascabile) ale procesorului i respectiv interne care apar ca urmare a unor condiii
speciale de funcionare a procesorului (cum ar fi execuia pas cu pas a programelor).
ntreruperea hardware dezactivabile sunt controlate de unul sau mai multe circuite
specializate (controlere de ntreruperi 8259A) care accept fiecare cel mult opt cereri de
ntreruperi, pe care le transmit ctre linia INT a procesorului.
Arhitectura Intel 80x86 accept 256 de nivele de intrerupere distincte. Fiecare din aceste
niveluri poate avea asociat o procedur numit rutin de tratare. Adresele acestor rutine sunt
trecute ntr-o aa numit tabel de ntreruperi, aflat la adrese fizice 00000 003FFh,
ocupnd deci 1024 octei.Fiecare nivel ocuup 4 octei, primii reprezint ofsetul iar ur mtorii
adresa de segment a procedurii (Fig.7.2).




















Ofset

Segment
Adres procedur de tratare
nivel 0

Ofset

Segment
Adres procedur de tratare
nivel 1

Ofset

Segment
Adres procedur de tratare
nivel 256
00000
003FF
Fig.7.2. Tabela de ntreruperi

SISTEME CU MICROPROCESOARE
121
7. Microprocesoarele INTEL 80x86: sistemul de ntreruperi

La apariia unei ntreruperi, au loc urmtoarele aciuni:
se salveaz n stiv registrele FLAGS, CS, IP (n aceast ordine);
se terg bistabilii IF i TF;
se furnizeaz procesorului un ntreg pe 8 bii (deci n gama 0...255), numit vector de
ntrerupere, care identific nivelul asociat ntreruperii;
se execut un salt indirect intersegment la adresa de nceput a rutinei de tratare, prin
intermediul tabelei de ntreruperi.



























De reinut !
Un calculator poate sa identifice mai multe tipuri de intrerupere numite
nivele de ntrerupere. Pentru fiecare nivel se poate defini cte o rutina de
tratare a intreruperii respective. Adresele de nceput ale acestor rutine se
pastreaz ntr-o tabela de pointeri denumita tabela de intreruperi. Aceste
rutine sunt activate la apariia i acceptarea de catre calculator a
ntreruperii corespunzator. Funcie de cerintele aplicaiei executate,
anumite nivele de ntrerupere pot fi invalidate, temporar sau pe toat
durata aplicaiei. O ntrerupere invalidat (sau mascat) nu este
recunoscut de ctre calculator.
La activarea unui semnal de ntrerupere se testeaz dac nivelul
corespunzator este validat i dac nu sunt n curs de deservire alte
ntreruperi mai prioritare; n caz afirmativ are loc ntreruperea temporar
a secvenei curente de execuie, se salveaz n stiv adresa instruciunii
urmatore i se face salt la rutina de tratare a ntreruperii. Dupa execuia
rutinei de ntrerupere se revine la secvena ntrerupt prin incarcarea
adresei salvate n stiv.
Adesea, pentru controlul ntreruperilor externe se utilizeaza un circuit
specializat denumit controlor de ntreruperi. Un astfel de circuit
deservete un set de semnale de ntrerupere. Funciile tipice ale unui
astfel de controlor sunt: detecia condiiei de producere a unei intreruperi
(ex: front crescator al semnalului de intrerupere), arbitrarea cererilor
multiple, mascarea unor ntreruperi, evidena intreruperilor deservite, etc.

SISTEME CU MICROPROCESOARE

122
7. Microprocesoarele INTEL 80x86: sistemul de ntreruperi

7.2. ntreruperi software
Instruciunile specifice ntreruperilor sunt: INT, IRET,INTO
Instruciunea INT (Interrupt ntrerupere software)
Sintaxa instruciunii este:
INT n
Unde n este o constant ntreag n domeniul 0...255.
Semnificaia este urmtoarea:
(SP) (SP) 2
SS :((SP) +1 : (SP)) (FLAGS)
IF 0, TF 0
(SP) (SP) 2
SS :((SP) +1 : (SP)) (CS)
(CS) (4*n +2)
(SP) (SP) 2
SS :((SP) +1 : (SP)) (IP)
(IP) (4*n )
Se ncarc n CS i IP, coninutul de la adresele fizice 4*n +2 i 4*n adic cei patru
octeci corespunztori nivelului n din tabela de ntreruperi.

Instruciunea IRET (Interrupt Return revenire din ntrerupere)
Datorit proceselor ce se desfoar la apariia unei ntreruperi, o procedur de tratare nu
se poate ncheia cu instruciunea RETF, deoarece trebuie refcut registrul de indicatori de
condiie. Rezult de aici c procedurile de tratare a ntreruperilor se ncheie ntotdeauna cu
instruciunea IRET. Aceast instruciune este fr operanzi i are urmtoarea semnificaie:
(IP) SS :((SP) +1 : (SP))
(SP) (SP) +2
(CS) SS :((SP) +1 : (SP))
(SP) (SP) +2
(FLAGS) SS :((SP) +1 : (SP))
(SP) (SP) +2
Rezult din cele prezentate mai sus c bistabilii IF i TF care au fost teri la apariia
ntreruperii, sunt refcui aa cum erau nainte de ntrerupere, odat cu ceilali bistabili din
registrul FLAGS.


SISTEME CU MICROPROCESOARE
123
7. Microprocesoarele INTEL 80x86: sistemul de ntreruperi

Instruciunea INTO (Interrupt if Overflow ntrerupere n caz de depire)
nstruciunea este fr operanzi i are urmtoarea semnificaie:

dac OF =1, atunci se execut secvena corespunztoare unei instruciuni INT 4

Codificarea instruciunilor INT este pe doi octei, cu excepia instruciunii INT 3, la care
codificarea este pe un singur octet, deoarece nivelurile 2 i 3 sunt n general utilizate de
programele de depanare (debuggere).
Nivelurile predefinite de ntrerupere sunt prezentate n tabelul 7.1
Tab.7.1. Numele i descrierea nivelului de ntrerupere
Numrul
ntreruperii
Numele rutinei Descriere
INT 00h IMONITOR mprire prin zero. Red controlul monitorului.
INT 01h rezervat Execuie pas cu pas
INT 02h neutilizat ntrerupere non-mask
INT 03h rezervat Puncte de ntrerupere a execuiei programului n vederea depanrii
INT 04h neutilizat Depire
INT 05h neutilizat
INT 06h neutilizat
INT 07h IMONITOR ntrerupe execuia programului utilizator i red controlul monitorului
INT 08h IKEYBOARD Citete o tast de la tastatur
INT 09h IDIS_BYTE Trimite un octet pentru afiare alfa-numeric pe ecran
INT 0Ah IDIS_CHAR Trimite un caracter ASCII pentru afiare pe ecran
INT 0Bh IDIS_OUTS Trimite un ir de caractere pentru a fi afiat pe ecran
INT 0Ch IDIS_CODE Trimite comenzi ctre ecran
INT 0Dh IWAIT_MS Temporizri n ms
INT OEh IAD_READ Cistete informaii de la CAN
INT 0Fh IDA_WRITE Comand convertorul numeric/analogic
INT 10h IBUZZER comand buzzer-ul
INT 11h neutilizat
INT 12h IPARAL Pentru interfaa de comunicaie paralel
INT 13h neutilizat
INT 14h ISERIAL Pentru interfaa de comunicaie serial

n cazul n care apar mai multe ntreruperi simultan, procesorul le trateaz n funcie de
prioritatea fiecreia. Prima ntrerupere tratat este cea cu prioritatea cea mai mare, dup care,
va fi tratat cea cu prioritatea imediat inferioar, etc
Prioritile ntreruperilor sunt prezentate n tabelul 7.2:
Tab.7.2. Prioritile ntreruperilor
ntreruperea Prioritatea ntreruperii
mprire prin zero, INT nn, INTO maxim
NMI
INTR
pas cu pas minim


SISTEME CU MICROPROCESOARE

124
7. Microprocesoarele INTEL 80x86: sistemul de ntreruperi



















7.3. ntreruperi hardware
ntr-un sistem bazat pe un procesor Intel 80x86 deservirea unei ntreruperi hardware se
desfaoar dupa urmatorul scenariu:
1. se activeaza un semnal de ntrerupere care indic un anumit eveniment;
2. controlerul de ntreruperi testeaz dac ntreruperea este validat (este nemascat) i
dac nu este n curs de desfurare o alt rutin de ntrerupere cu prioritate mai mare;
3. dac condiiile de la pasul 2 sunt ndeplinite atunci se activeaz linia de ntrerupere
catre procesor:
- dac ntreruperea este mascat, atunci este ignorat;
- dac ntreruperea este nemascat, dar este n curs de desfurare o intrerupere mai
prioritar atunci se ateapt terminarea acesteia, dup care se continua cu pasul 3;
cererea de intrerupere se memoreaza ntr-un registru al controlerului destinat
acestui scop;
4. procesorul testeaz intrarea de ntrerupere la ncheierea execuiei instruciunii n curs
de desfurare;
5. dac ntreruperea este validat (indicatorul IF este setat) atunci se salveaz n stiv
De reinut !
O ntrerupere este un proces complex ce poate fi descompus n operaii
simple. Instruciunea INT n comand procesorului s citeasc coninutul
locaiei de memorie RAM n. Dup salvarea n stiv a adresei returnate
registrul indicator de instruciune este setat la aceast adres. Codul
ntreruperii, care ncepe la aceast adres, este executat. Cnd execuia
acestuia se termin instruciunea IRET cauzeaz ntoarcerea din
ntrerupere. Registrul indicator de instruciune este setat la adresa
salvat anterior n stiv. Instruciunile INT i IRET nu seteaz registrul
indicator de condiie. Procesorul depune n stiv adresa indicatorului de
instruciune incrementat cu 2 IP+2. Ulterior procesorul va reveni la
aceast adres. Registrul indicator de instruciune IP este setat la adresa
memorat n locaia 02. Procesorul execut instruciunile de la aceast
adres pn la ntlnirea instruciunii IRET. El extrage dup aceea
urmtoarea adres a instruciunii de executat din stiv, programul
relundu-se de unde a fost ntrerupt.


SISTEME CU MICROPROCESOARE
125
7. Microprocesoarele INTEL 80x86: sistemul de ntreruperi

adresa instruiunii imediat urmatoare i coninutul registrului de stare; n caz contrar
ntreruperea este ignorat (nu se memoreaza);
6. se lanseaz procedura de identificare a sursei de ntrerupere (mai exact a nivelului de
ntrerupere); pentru aceasta se genereaz dou cicluri INTA (Interrupt Acknowlidge)
7. controlerul de ntreruperi plaseaz vectorul ntreruperii curente pe magistrala de date
pe durata celui de-al doilea ciclu INTA
8. procesorul folosete vectorul de intrerupere ca index n tabela de ntreruperi pentru
determinarea adresei rutinei de tratare a intreruperii;
9. procesorul execut un salt la adresa extras din tabela de intreruperi
10. se execut rutina de ntrerupere;
11. nainte de ncheierea rutinei de ntrerupere, prin program, se anun controlerul de
ntreruperi asupra ncheierii ntreruperii curente printr-o comand EOI End Of Interrupt;
prin aceasta se permite controlerului deservirea unei noi ntreruperi, mai puin prioritare
12. rutina de ntrerupere se ncheie cu o instructiune IRET, execuia ei va determina
refacerea registrului de stare cu informaia salvat n stiv i execuia unui salt la secvena
intrerupt; adresa de revenire se extrage tot din stiv;
13. se continu execuia secventei ntrerupte.

















De reinut !
ntreruperile hardware sunt scurte fragmente de cod care
furnizeaz servicii puternice care pot fi activate de componentele
hardware. De exemplu cnd imprimanta nu mai are hrtie aceasta trimite
un semnal procesorului. Procesorul ntrerupe procesul curent i trateaz
aceast ntrerupere. n acest caz rularea codului ntreruperii va avea ca
efect afiarea mesajului Paper Out. Cnd execu
se termin se reia programul ntrerupt.
ntreruperile hardware sunt ignorate dac bitul indicator I din
registrul de stare nu este setat. Pentru a seta acest bit folosii
instruciunea de setare a acestuia STI. Pentru a deseta bitul indicator I
folosii instruciunea CLI.
ntreruperile hardware sunt activate de harddisk, imprimate,
apsarea tastelor, micarea mouse-ului i alte evenimente.
ntreruperile pot stabili prioriti de tratare a evenimentelor, de
exemplu harddisk-ul fiind prioritar imprimantei. Este opiunea
programatorului s optimizeze procesele prin folosirea ntreruperilor.

SISTEME CU MICROPROCESOARE

126
7. Microprocesoarele INTEL 80x86: sistemul de ntreruperi

7.4. Controlerul de ntreruperi I8259A
Controlerul de ntreruperi I8259A a fost proiectat pentru microprocesoarele din familia
Intel: 8080, 8085, 8086, 8088, 80286,... Acest circuit poate deservi maxim opt linii de
ntrerupere.
Pentru extinderea numarului de ntreruperi, mai multe controlere se pot conecta n
cascad.
Se prezint modul de conectare a controlorului ntr-un sistem cu microprocesor, la care
legtura dintre controler i microprocesor se realizeaz prin grupul de semnale INTR i
INTA\. (Fig.7.3).













Controlerul I8259A activeaz semnalul INTR n cazul n care sunt ndeplinite
urmatoarele condiii:
exist o cerere de ntrerupere pe una din intrrile IRQ0-7 (Interrupt ReQuest);
nu este in curs de deservire o ntrerupere mai prioritar;
intrarea pe care a aprut ntreruperea este nemascat;
controlerul este validat.
Controlerul I8259A se intercaleaz ntre microprocesor i sursele de ntreruperi, iar
dintre funciile pe care le ndeplinete amintim:
multiplexarea ntreruperilor de la diferite surse la pinul corespunztor al
microprocesorului;
rezolvarea prioritilor n cazul apariiei ntreruperilor simultane;
Fig.7.3. Schema bloc a unui sistem de intreruperi cu 8259A

SISTEME CU MICROPROCESOARE
127
7. Microprocesoarele INTEL 80x86: sistemul de ntreruperi

generarea adresei rutinei de tratare a ntreruperii;
mascarea anumitor ntreruperi;
evidena ntreruperilor deservite, etc
Circuitul I8259A suport mai multe moduri de lucru. Acestea pot fi selectate cu ajutorul
a dou categorii de cuvinte de comand:
cuvinte de iniializare (folosite o singur dat la pornirea sistemului) ICW 0-4
(Initialization Command Word);
cuvinte de operare (folosite pentru modificarea dinamic a modului de lucru) OCW 0-3
(Operation Command Word).

























De reinut !
ntreruperile hardware nemascat sunt generate la aplicarea unui
semnal la pinul INTR al microprocesorului. Deoarece microprocesorul
are un singur terminal INTR, rezult c o ntrerupere hardware poate fi
creat de ctre o singur periferic a microprocesorului.
Pentru a elimina acest neajuns, se utilizeaz dispozitive externe,
special dedicate prelucrrii mai multor ntreruperi. Unul dintre aceste
dispozitive este controlerul de ntreruperi I8259A.
Controlerul extern are 8 linii de intrare pentru ntreruperi. n
momentul apariiei unui semnal de ntrerupere pe o linie din cele 8,
controlerul anun microprocesorul despre apariia ntreruperii prin
intermediul liniei INTR i transmite tipul ntreruperii pe magistrala de
date (numrul de ordine al ntreruperii, ce poate fi cuprins ntre 0 i 255).
Aceste ntreruperi pot fi dezactivate prin utilizarea instruciunii
CLI (clear interrupt) sau activate prin utilizarea instruciuni STI (set
interrupt).
Microprocesorul 80386EX nu are prezent fizic pinul INTR, dar are
un controler de ntreruperi format din dou controlere 8259A conectate
n cascad.


SISTEME CU MICROPROCESOARE

128
7. Microprocesoarele INTEL 80x86: sistemul de ntreruperi


































Test de autoevaluar
1. Ce se nelege prin ntrerupere?
2. Cum se clasific sistemul de ntreruperi la microprocesoarele
INTEL 80x86?
3. n ce constau ntreruperile software?
4. n ce constau ntreruperile hardware?
5. Care sunt instruciunile specifice ntreruperilor software?
6. Care sunt nivelurile predefinite de ntrerupere?
7. Ce rol area controlerul de ntreruperi I8259A
Lucrare de verificare la Unitatea de nvare 7
Aceast unitate de nvare se va regsi n lista de subiecte pentru
examen prin urmtoarele subiecte:
1. ntreruperi software;
2. ntreruperi hardware;
3. Controlerul de ntreruperi I8259A.
Rspunsuri i comentarii la ntrebrile din testul de
autoevaluare

Rspunsurile la ntrebrile din testul de evaluare se gsesc n textul
unitii de nvare.

Lucrare de laborator
Lucrarea aferent acestei uniti de nvare se intituleaz
PROGRAMAREA N LIMBAJ DE ASAMBLARE FOLOSIND
SIMULATORUL SMS32: sistemul de ntreruperi.
Obiectivele laboratorului sunt:
Prezentarea sistemului de ntreruperi al unui procesor;
Studiul ntreruperilor comparativ cu procedurile;
Studiul ntreruperilor software SMS32;
Studiul ntreruperilor hardware SMS32.

SISTEME CU MICROPROCESOARE
129
7. Microprocesoarele INTEL 80x86: sistemul de ntreruperi






















Concluzii
Sistemul de ntreruperi este acea parte a unui sistem de calcul
care permite detectia unor evenimente externe sau interne i
declanarea unor aciuni pentru tratarea lor.
Majoritatea sistemelor de ntrerupere utilizeaz un sistem de
prioriti pentru a stabili ordinea de deservire a cererilor concurente de
ntrerupere. Prioritatea se stabilete pe baza importanei acordate
evenimentului tratat i a restriciilor de timp n soluionarea
ntreruperii. Politica de prioriti trebuie s asigure soluionarea
echitabil i n timp util a tuturor cererilor.
Un calculator poate sa identifice mai multe tipuri de ntrerupere
(numite nivele de intrerupere). Pentru fiecare nivel se poate defini cte
o rutin de tratare a ntreruperii respective.
Bibliografie
1. Dobriceanu Mircea; Sisteme cu microprocesoare; Notie de curs,
Tipografia Universitii din Craiova, 2012 i format electronic
postat pe http://www.em.ucv.ro
2. Dobriceanu Mircea; Sisteme de achiziie i microprocesoare,
Editura Universitaria Craiova, 2003, p.304, ISBN 973-8043-289-8
3. Musc Gheorghe; Programarea n limbaj de asamblare, Editura
Teora, 1997
4. Rotar Dan; Arhitectura sistemelor de calcul, Editura ALMA
MATER, 1997


SISTEME CU MICROPROCESOARE

130
8. Tehnici pentru mbuntirea performanelor microprocesoarelor

Unitatea de nvare nr. 8




TEHNICI PENTRU MBUNTIREA
PERFORMANELOR
MICROPROCESOARELOR




Cuprins Pagina
Obiectivele unitii de nvare nr. 8 132
8.1. Paralelismul - tehnica unei prelucrri mai rapide 132
8.2. Coada pentru preluare anticipat ("prefetch queue") 136
8.3. Pipeline - suprapunerea execuiei mai multor instruciuni 138
8.4. Memoria cache - ci multiple de acces la memorie 142
8.5. Arhitectura VLIW 143
8.5.1. Prezentare general 143
8.5.2. Prezentare funcional 144
8.6. Multiprocesarea 147
8.6.1.Prezentare general 147
8.6.2.Arhitecturi de sisteme multiprocesor 148
Lucrare de laborator 149
Test de autoevaluare 149
Lucrare de verificare unitatea de nvare nr. 8 150
Rspunsuri i comentarii la ntrebrile din testul de autoevaluare 150
Concluzii 150
Bibliografie unitatea de nvare nr. 8 150


SISTEME CU MICROPROCESOARE
131
8. Tehnici pentru mbuntirea performanelor microprocesoarelor
OBIECTIVELE unitii de nvare nr. 8

Principalele obiective ale Unitii de nvare nr. 8 sunt:














8.1. Paralelismul - tehnica unei prelucrri mai rapide

Una din ideilecare st la baza arhitecturii procesoarelor RISC era aceea de a executa o
instruciune per ciclu de ceas. Chiar dac instruciunile RISC erau simplificate, execuia unei
instruciuni presupunea mai muli pai. Soluia acestei probleme, aplicat apoi ntr-o anumit
msur i la procesoarele 80x86, a fost paralelismul n execuia pailor.
S considerm secvena pentru o instruciune MOV reg, reg:
preia octetul cu codul instruciunii (fetch opcod) din memorie;
actualizeaz EIP pentru a indica urmtorul octet;
decodific instruciunea;
preia (fetch) operandul surs;
memoreaz valoarea preluat n registrul destinaie.
Execuia acestei instruciuni presupune cinci faze, cu o anumit dependen ntre ele.
De exemplu, preluarea opcodului de CPU din memorie nainte de a actualiza pe EIP pentru a
indica urmtorul octet. De asemenea trebuie decodificat instruciunea nainte de a prelua
registrul surs, deoarece CPU nu tie c e nevoie de un registru surs nainte de decodificare.
Nu n ultimul rnd CPU trebuie s preia registrul surs nainte de a-l memora n registrul
destinaie. Cele mai multe din fazele de execuie ale acestei instruciuni MOV sunt
secveniale, CPU trebuind s execute o faz nainte de a trece la urmtoarea. Singura excepie
este "actualizeaz EIP ...", deoarece niciuna din fazele urmtoare nu depinde de acest pas. Ea
poate fi a treia, a patra sau a cincea faz fr a afecta rezultatul final al instruciunii. Mai mult
Explicarea fundamentelor privind implementarea paralelismului
la nivelul instruciunii;
Cunoaterea rolului buffer-lui de decodificare anticipat a
instruciunilor;
Cunoaterea rolului memoriei cache;
Cunoaterea arhitecturi VLIW


SISTEME CU MICROPROCESOARE

132
8. Tehnici pentru mbuntirea performanelor microprocesoarelor
aceast faz se poate executa simultan (n acelai timp) cu oricare dintre paii menionai, fr
a afecta operaia n sine:
preia octetul cu codul instruciunii (fetch opcod) din memorie;
decodific instruciunea;
preia (fetch) operandul surs i actualizeaz EIP pentru a indica urmtorul octet;
memoreaz valoarea preluat n registrul destinaie.
Prin efectuarea a dou faze n paralel putem deci reduce timpul de execuie al acestei
instruciuni cu un ciclu de ceas.
Instruciunea MOV EAX, [EBX+deplasament], de tip MOV reg, mem, are secvena:
preia octetul cu codul instruciunii (fetch opcod) din memorie;
actualizeaz EIP pentru a indica urmtorul octet;
decodific instruciunea;
preia (fetch) deplasamentul operandului din memorie;
actualizeaz EIP pentru a indica dincolo de deplasament;
calculeaz adresa operandului (EBX + deplasament);
preia operandul;
memoreaz valoarea preluat n registrul destinaie.
i aici exist posibilitatea suprapunerii unor faze, cum ar fi:
preia octetul cu codul instruciunii (fetch opcod) din memorie;
actualizeaz EIP pentru a indica urmtorul octet i actualizeaz EIP pentru a inica
urmtorul octet;
preia (fetch) deplasamentul operandului din memorie;
calculeaz adresa operandului (EBX + deplasament) i actualizeaz EIP pentru a indica
dincolo de deplasament;
preia operandul;
memoreaz valoarea preluat n registrul destinaie.
n acest exemplu s-a redus numrul pailor de la 8 la 6 cicluri de ceas prin suprapunerea
actualizrii EIP cu alte dou operaii.
Ca un ultim exemplu s considerm instruciunea ADD [EBX + deplasament], const, de
tip MOV mem, const , instruciunea cu cel mai mare numr de pai de pn acum:
preia octetul cu codul instruciunii (fetch opcod) din memorie;
actualizeaz EIP pentru a indica urmtorul octet;
decodific instruciunea;
preia deplasamentul pentru a-l utiliza n calculul adresei efective;

SISTEME CU MICROPROCESOARE
133
8. Tehnici pentru mbuntirea performanelor microprocesoarelor
actualizeaz EIP pentru a indica dincolo de valoarea deplasamentului;
preia valoarea constant (surs) din memorie i o trimite la ALU;
calculeaz adresa operandului destinaie EBX +deplasament;
ia valoarea operandului destinaie din memorie i o trimite la ALU;
comand ALU pentru adunare;
memoreaz rezultatul napoi n memorie;
actualizeaz indicatorii de condiie conform rezultatului operaiei de adunare;
actualizeaz EIP pentru a indica n memorie dincolo de valoarea constantei.
Putem suprapune cel puin trei pai, observnd c anumite faze nu depind de rezultatul
precedentei:
preia octetul cu codul instruciunii (fetch opcod) din memorie;
decodific instruciunea i actualizeaz EIP pentru a indica urmtorul octet;
preia deplasamentul pentru a-l utiliza n calculul adresei efective;
actualizeaz EIP pentru a indica dincolo de valoarea deplasamentului;
preia valoarea constant din memorie i o trimite la ALU;
calculeaz adresa operandului destinaie EBX +deplasament;
ia valoarea operandului destinaie din memorie i o trimite la ALU;
comand ALU pentru adunare;
memoreaz rezultatul napoi n memorie i actualizeaz indicatorii de condiie conform
rezultatului operaiei de adunare i actualizeaz EIP pentru a indica n memorie dincolo de
valoarea constantei.
Nu am putut suprapune una din operaiile "actualizeaz EIP ..." pentru c faza
precedent i fazele ulterioare folosesc valoarea lui EIP nainte i dup actualizare.
Se mai poate observa c n secvena: preluare a constantei din memorie i apoi calcul
al adresei efective, niciuna din cele dou operaii nu depinde de cealalt, astfel c pot fi
interschimbate. Rezult urmtoarea secven:
preia octetul cu codul instruciunii (fetch opcod) din memorie
decodific instruciunea i actualizeaz EIP pentru a indica urmtorul octet;
preia deplasamentul pentru a-l utiliza n calculul adresei efective;
actualizeaz EIP pentru a indica dincolo de valoarea deplasamentului;
calculeaz adresa operandului destinaie EBX +deplasament;
preia valoarea constant din memorie i o trimite la ALU;
ia valoarea operandului destinaie din memorie i o trimite la ALU;
comand ALU pentru adunare;

SISTEME CU MICROPROCESOARE

134
8. Tehnici pentru mbuntirea performanelor microprocesoarelor
memoreaz rezultatul napoi n memorie i actualizeaz indicatorii de condiie conform
rezultatului operaiei de adunare i actualizeaz EIP pentru a indica n memorie dincolo de
valoarea constantei.
Aceast modificare nu elimin pai, dar reduce dependena ntre faze succesive,
permind alte suprapuneri. Acum putem suprapune i " actualizare EIP .. " cu calculul adresei
efective:
preia octetul cu codul instruciunii (fetch opcod) din memorie;
decodific instruciunea i actualizeaz EIP pentru a indica urmtorul octet;
preia deplasamentul pentru a-l utiliza n calculul adresei efective;
calculeaz adresa operandului destinaie EBX +deplasament i actualizeaz EIP pentru a
indica dincolo de valoarea deplasamentului;
preia valoarea constant din memorie i o trimite la ALU;
ia valoarea operandului destinaie din memorie i o trimite la ALU;
comand ALU pentru adunare;
memoreaz rezultatul napoi n memorie i actualizeaz indicatorii de condiie conform
rezultatului operaiei de adunare i actualizeaz EIP pentru a indica n memorie dincolo de
valoarea constantei.
Dei ar prea posibil preluarea constantei i a operandului din memorie n acelai timp,
unitatea central (CPU) nu poate s o fac deoarece exist doar o singur magistral de date
utilizat pentru preluarea acestor valori din memorie. Vom vedea n subcapitolul urmtor c
exist o soluie i pentru aceast situaie.











De reinut !
Modalitatea de a executa pai ai unei instruciuni n paralel cu ali
pai constituie o tehnic esenial de a mbuntii performanele unui
procesor fr a mri frecvena de ceas. Totui este evident c nu se
ctig foarte mult, pentru c instruciunile ca atare sunt nc executate
secvenial, o instruciune trebuind s se finalizeze pentru ca s nceap
urmtoarea.


SISTEME CU MICROPROCESOARE
135
8. Tehnici pentru mbuntirea performanelor microprocesoarelor

8.2. Coada pentru preluare anticipat ("prefetch queue").

Un factor cheie pentru mrirea vitezei unui procesor este deci executarea operaiilor n
paralel. Dac putem s executm dou operaii n fiecare ciclu de ceas, unitatea central
(CPU) va executa instruciunile de dou ori mai rapid la aceiai frecven de ceas. Muli pai
din execuia unei instruciuni folosesc resurse comune, cum ar fi unitile funcionale ale
procesorului (ALU i CU). O unitate funcional este capabil doar de o singur operaie la un
moment dat. Dou operaii nu pot folosi aceiai unitate funcional simultan (de exemplu s
incrementeze EIP i s adune dou valori n acelai timp).
Alt dificultate n execuia simultan a operaiilor este c o operaie poate depinde de
rezultatul celei anterioare. Un exemplu n acest sens sunt cei doi pai ai instruciunii ADD n
care se adun dou valori i apoi se memoreaz suma. Suma nu poate fi memorat pn cnd
nu este calculat. Mai sunt i alte resurse care nu pot fi partajate de paii unei instruciuni.
Existnd o singur magistral de date, nu se poate prelua opcodul unei instruciuni n
acelai timp cu memorarea unei valori n memorie.
Ideea care st la baza proiectrii unei uniti centrale care s execute mai muli pai n
paralel este de a aranja paii pentru a reduce conflictele care apar n utilizarea unor resurse
comune sau de a aduga resurse care s permit ca dou, sau mai multe, operaii s poat fi
executate simultan n uniti funcionale diferite.
Pe perioadele de timp ct magistrala de date este neutilizat de instruciunea curent o
putem folosi pentru preluarea anticipat a opcodurilor i operanzilor i s salvm aceste valori
pentru execuia instruciunii urmtoare. Resursa hardware pentru aceast operaie este coada
de preluare anticipat - coada de prefetch ("prefetch queue").
Se prezint organizarea unei uniti centrale (CPU) cu coad pentru preluare anticipat
(Fig. 8.1).
BIU (Bus Interface Unit) - unitatea de interfa cu magistralele este responsabil cu
controlul accesului la magistralele de date i adrese. Atunci cnd o component a CPU
dorete s acceseze memoria trimite o cerere de acces la BIU care este responsabil cu
"dirijarea" traficului i gestioneaz cererile, care pot fi eventual simultane, de acces la
magistrale provenind de la diferitele subcomponente ale CPU (de exemplu EU- Execution
Unit - unitatea de execuie sau coada de preluare anticipat). Atunci cnd unitatea de execuie
(EU) nu folosete BIU, aceasta poate prelua octei suplimentari din fluxul de instruciuni. De
fiecare dat cnd unitatea central are nevoie de o instruciune sau operand ea preia urmtorul
octet disponibil din coada de preluare anticipat. Deoarece BIU poate prelua din memorie

SISTEME CU MICROPROCESOARE

136
8. Tehnici pentru mbuntirea performanelor microprocesoarelor
pn la 4 octei simultan i "consum" mai puin de 4 octei per ciclu de ceas, orice octet pe
care unitatea central l-ar prelua din fluxul de instruciuni se va afla deja n coada de
prefetch.












Din cele prezentate mai sus rezult c prezena unei cozi de prefetch mbuntete
performanele unitii centrale. Acesta este motivul pentru care ea exist la toate procesoarele
familiei 80x86, chiar i la 8088. La toate aceste procesoare exist un BIU care preia continuu
date pentru coada de prefetch atunci cnd nu se citete sau scrie informaie din/n memorie,
deci cnd exist cicluri de magistral nefolosite.
Coada de prefetch este mai eficient pentru o dimensiune mai mare a magistralei de
date. Un 8086 este mai rapid dect un 8088 i pentru c poate s umple coada de prefetch cu
mai puine cicluri de magistral. Unitatea central are nevoie de magistrala de date i pentru
alte scopuri dect preluare opcoduri, deplasamente sau constante imediate. Instruciunile care
acceseaz memoria concureaz cu coada de prefetch pentru accesul la magistral i au
prioritate. Dac avem o secven de instruciuni care toate acceseaz memoria, coada se poate
goli, existnd prea puine cicluri de magistral disponibile pe durata execuiei acestor
instruciuni. Odat ce coada este goal, unitatea central trebuie s atepte ca BIU s preia noi
opcoduri din memorie, ncetinind execuia programului.

Fig 8.1. Organizare CPU cu coad pentru preluare anticipat
CPU
EU
R
e
g
i
s
t
r
e


ALU
Unitate de
control
Coad pentru
preluare
BIU
Magistral de date
Magistral de adrese

SISTEME CU MICROPROCESOARE
137
8. Tehnici pentru mbuntirea performanelor microprocesoarelor












8.3. Pipeline - suprapunerea execuiei mai multor instruciuni
Execuia instruciunilor n paralel folosind BIU i EU este un caz special de pipeline.
Familia 80x86 ncepnd de la 80486 incorporeaz un pipeline de instruciuni pentru
mbuntirea performanelor unitii centrale; cu puine excepii, acesta permite executarea
unei instruciuni per ciclu de ceas.
Avantajul cozii de prefetch (coada pentru preluare anticipat) era c: permite suprapunerea
prelurii opcodului i decodificrii lui, cu execuia instruciunii precedente.
Dac este posibil i putem s mai adugm resurse hardware similare, vom putea,
probabil, s executm aproape toate operaiile n paralel, aceasta fiind i ideea de pipeline.
Un pipeline tipic: considerm urmtorii pai necesari pentru realizarea unei operaii
generice:
fetch opcod din memorie;
decodific instruciunea i prefetch operand;
calculeaz un mod de adresare complex [EBX + deplasament], dac e cazul;
preia valoarea surs din memorie i registrul de destinaie ;
calculeaz rezultatul;
memoreaz rezultatul n registrul destinaie.
De reinut !
Procesoarele Intel ncepnd cu generaia Pentium pstreaz
compatibiltatea cu microprocesoarele precedente i prezint posibiltatea
de a executa dou instruciuni simultan, datorit tehnologiei superioare,
comun microprocesoarelor RlSC, fiind prevzute cu Buffer de
decodificare anticipat a instruciunilor.
Codul din memoria cache este testat pentru a sesiza din timp eventualele
instruciuni de salt anterior ncrcrii acestora n pipeline; decodificarea
instruciunilor se realizeaz deci anticipat i ulterior sunt transmise
unitilor de execuie. Transmiterea se realizeaz pe o magistral de 256
de bii, dimensiunea mare a acesteia permind aducerea secvenelor de
instruciuni cu o vitez mai mare dect a capacitaii de procesare.

SISTEME CU MICROPROCESOARE

138
8. Tehnici pentru mbuntirea performanelor microprocesoarelor
Fig 8.2. Organizarea unitii centrale utiliznd tehnica pipeline
Pipeline
Etaj 1 2 3 4 5 6
Fetch
(preia)
opcod
Decodific
opcod &
prefetch
operand
Calculeaz
adres
efectiv
Fetch
valoare surs
&
destinaie

Calculeaz
rezultat

Memoreaz
rezultat
S presupunem c se poate construi o unitate central care s-ar compune dintr-un set de
mici uniti centrale, etaje, fiecare din ele specializat pe prelucrrile corespunztoare pailor
de mai sus, obinndu-se astfel un pipeline cu 6 etaje (Fig. 8.2).








Aceast structur se poate obine prin realizarea de ci de date multiple n interiorul
unitii centrale i asigurndu-ne c niciodat doi operanzi nu vor concura pentru utilizarea
magistralei de date, fiind excluse operaiile de tip ... memorie, memorie).
Dac vom avea un hardware dedicat pentru fiecare din etaje, practic aproape toi aceti
pai pot avea loc n paralel. Bineneles, nu putem prelua i decodifica opcodul pentru mai
mult de o instruciune odat, dar vom putea prelua opcodul n timp ce decodificm
instruciunea anterioar. Pentru un pipeline cu n - etaje vom putea executa simultan n
instruciuni (Fig. 8.3).








T1,T2,T3 ... reprezint perioade consecutive ale ceasului sistem.
1. la momentul T = T1, CPU preia opcodul pentru prima instruciune;
2. la momentul T = T2, CPU ncepe decodificarea opcodului pentru prima
instruciune i n paralel, preia (fetch) un bloc de octei din coada de prefetch, pentru
eventualitatea c instruciunea are operanzi.
Fig 8.3. Funcionarea unui pipeline
Opcod
Opcod
Opcod
Opcod
Decodif.
Decodif.
Decodif.
Decodif.
Adres
Adres
Adres
Adres
Valori
Valori
Valori
Valori
Calcul
Calcul
Calcul
Calcul
Mem.
Mem.
Mem.
Mem.
Instruciune 1
Instruciune 2
Instr. 3
T1 T2 T3 T4 T5 T6 T7 T8 T9

SISTEME CU MICROPROCESOARE
139
8. Tehnici pentru mbuntirea performanelor microprocesoarelor
Deoarece prima instruciune nu mai are nevoie de circuitul utilizat pentru preluarea
opcodului, el va fi utilizat de CPU pentru a prelua opcodul celei de a doua instruciuni, n
paralel cu decodificarea primei instruciuni. De menionat c aici apare un prim conflict: CPU
ncearc s preia urmtorul octet din coada de prefetch pentru a-l folosi ca operand i n
acelai timp, preia octetul operandului, tot din coada de prefetch, pentru a-l folosi ca opcod.
3. la momentul T = T3, CPU calculeaz adresa operandului pentru prima instruciune, dac
exist. CPU nu va face nimic legat de prima instruciune dac ea nu folosete un mod de
adresare care s necesite un astfel de calcul. Tot pe durata lui T3, CPU decodific
opcodul pentru a doua instruciune i preia eventualul operand. Nu n ultimul rnd, se
preia opcodul pentru a treia instruciune.
Cu fiecare nou ciclu (perioad) de ceas, n pipeline se finalizeaz alt pas n execuia
instruciuni i CPU va prelua nc o nou instruciune din memorie.
4. la momentul T = T6, se finalizeaz execuia primei instruciuni, se calculeaz rezultatul
pentru a doua, ...., se preia opcodul pentru a asea instruciune.
Odat ce pipeline-ul este plin unitatea central va finaliza o instruciune la fiecare ciclu
de ceas. Aceasta este adevrat chiar dac exist moduri complexe de adresare care trebuie
calculate, operanzi care trebuie preluai din memorie sau alte operaii care folosesc nu
folosesc pipeline-ul.
Legat de conflictul menionat anterior, la momentul T = T2 CPU ncearc s preia un
bloc de octei pentru un operand n acelai timp ncercnd s preia urmtorul opcod. Pn
cnd CPU nu decodific prima instruciune nu tie ci operanzi are aceast instruciune i
nici lungimea lor. Totui CPU are nevoie de aceast informaie pentru a determina lungimea
efectiv a instruciunii i a tii ce octet s preia ca opcod al instruciunii urmtoare.
Apare deci ntrebarea: cum ar putea pipeline-ul s preia un opcod n paralel cu
preluarea unui operand cu semnificaia de adres ?

Prima soluie ar fi s nu permitem s se ntmple aceasta. Dac o instruciune are drept
operand o adres sau constant vom ntrzia nceputul urmtoarei instruciuni. Din pcate
multe instruciuni au aceti operanzi adiionali astfel c aceast abordare va avea un impact
negativ asupra vitezei de prelucrare a unitii centrale.

A doua soluie presupune existena unui hardware suplimentar i mai complicat.
Dimensiunea operandului i constantei este de 1,2 sau 4 octei. De aceea, dac vom prelua 3
octei din memorie, cu un offset (decalaj ) de 1, 3 i 5 dincolo de opcodul curent decodificat,
vom ti c, probabil, unul din aceti octei va conine opcodul pentru instruciunea urmtoare.

SISTEME CU MICROPROCESOARE

140
8. Tehnici pentru mbuntirea performanelor microprocesoarelor
Odat ce decodific instruciunea curent vom ti i ce dimensiune are i vom tii i offsetul
pentru urmtorul opcod. Se poate utiliza un circuit simplu de selecie (multiplexor) pentru a
alege unul din cei trei octei drept opcod.
Din pcate pentru un procesor 80x86 vom avea de selectat urmtorul opcod din mai mult de
trei octei deoarece instruciunile 80x86 au o gam de lungimi mai mare. De exemplu, o
instruciune care mut (MOV) o constant de 32 de bii ntr-o locaie de memorie poate avea
10 sau mai muli octei. Mai mult, anumite opcoduri 80x86 au mai mult de 1 octet, astfel c
unitatea central va trebui s preia mai muli octei pentru a decodifica instruciunea curent.
n concluzie, cu resurse hardware corespunztoare, putem decodifica opcodul curent n
acelai timp n care-l prelum pe urmtorul.
Scenariul prezentat este, puin prea simplificat. Exist dou situaii dezavantajoase
pentru structura simpl de pipeline prezentat: accesul concurent al instruciunilor la
magistrala de date i execuia nesecvenial a programului. Ambele situaii fac s creasc
timpul mediu de execuie al instruciunilor n pipeline.
Accesul concurent poate aprea, de exemplu, atunci cnd se execut concurent o
instruciune "MOV mem,reg " care are nevoie s memoreze date n memorie, mpreun cu o
instruciune "MOV reg, mem" care are nevoie s citeasc date din memorie. Concurena se
manifest prin ncercarea de a folosi (cvasi)simultan magistralele de adrese i date.
O modalitate simpl de a rezolva aceast problem este blocarea pipeline-ului
(pipeline stall). Unitatea central va da prioritate instruciunii celei mai avansate ca execuie
n pipeline. Ea va suspenda preluarea de opcoduri pn cnd instruciunea curent i preia
operandul. Aceasta va face ca urmtoarea instruciune din pipeline s aib nevoie de dou
cicluri de ceas i nu de unul pentru executarea ei.









De reinut !
Pentru a depi viteza limitat de transmisie i propagare a informaiei se
impune utilizarea tehnicilor de prelucrare paralel a informaiei. n acest
caz trebuie s se utilizeze tehnici noi de programare care s se adapteze
arhitecturii paralele. n decursul anilor s-a dovedit c trecerea de la
programarea secvenial la programarea paralel este dificil, probabil
datorita modului de gndire secvenial al creierului uman. n cazul
procesoarelor Intel soluia abordat a fost de a ascunde paralelismul prin
utilizarea unei arhitecturi de prelucrare de tip pipeline ce const n
existena mai multor uniti de procesare specializate, care prelucreaz n
paralel mai multe instruciuni aflate n diferite faze de execuie.

SISTEME CU MICROPROCESOARE
141
8. Tehnici pentru mbuntirea performanelor microprocesoarelor


8.4. Memoria cache - ci multiple de acces la memorie

Proiectanii de arhitecturi de calcul pot rezolva multe din problemele accesului simultan
prin utilizarea inteligent a cozii de prefetch mpreun cu un subsistem de memorie cache.
Coada de prefetch poate aciona ca un tampon pentru date n fluxul de instruciuni, iar
memoria cache poate fi proiectat cu zone separate pentru date i instruciuni. Ambele tehnici
pot mbunti performanele sistemului prin eliminarea unor conflicte de magistral.
Coada de prefetch va aciona doar ca un buffer ntre fluxul de instruciuni i circuitul de
preluare a opcodului instruciunii. Coada de prefetch este eficent atunci cnd unitatea
central nu acceseaz n mod regulat memoria, atunci BIU putnd s preia opcoduri
suplimentare pentru ea. Memoria cache crete numai viteza, nu i capacitatea sistemului de
memorare al calculatorului. Octeii destinai memoriei cache nu sunt inclui la calcularea
memoriei totale a unui calculator.
Un procesor 80x86 care utilizeaz un pipeline va accesa n mod constant memoria
deoarece preia un opcod la fiecare ciclu de ceas. Coada de prefetch nu poate beneficia de
ciclurile de magistral "neutilizate" pentru a prelua opcoduri adiionale, pentru c aceste
cicluri nu exist. Ea este totui eficient pentru c BIU preia octei multipli la fiecare acces i
majoritatea instruciunilor sunt scurte. Fr coad de prefetch sistemul va trebui s preia
explicit fiecare opcod, chiar dac BIU, n mod "accidental", a preluat opcodul mpreun cu
instruciunea precedent. Cnd coada exist nu va mai fi nevoie s preia nc odat explicit
opcodul n cauz, EU putndu-l s-l foloseasc.
n realitate exist destul de puine procesoare care au o arhitectur Harvard adevrat.
Motivul principal este costul ridicat presupus de numrul mare de conexiuni externe i alte
complicaii de natur tehnologic care ar rezulta din implementarea separat a celor dou
magistrale. Proiectanii de arhitecturi de calcul au descoperit totui c se pot obine avantaje
importante de la arhitectura Harvard realiznd i un compromis cu creterea complexitii
tehnologice, prin utilizarea unor memorii cache separate pentru instruciuni i date. Astfel
exist multe procesoare, printre ele fiind i cele cu IA 32, care folosesc intern o arhitectur
Harvard i extern o arhitectur Von Neumann, (Fig. 8.4).
Fiecare unitate de execuie poate avea propriul pipeline. Dac ea ntlnete dou sau
mai multe instruciuni n fluxul program, instruciuni care se pot executa independent, le va
executa ca atare, n paralel.


SISTEME CU MICROPROCESOARE

142
8. Tehnici pentru mbuntirea performanelor microprocesoarelor




















8.5. Arhitectura VLIW
8.5.1. Prezentare general

Operarea superscalar ncearc s programeze, prin resurse hardware, execuia
simultan a mai multor instruciuni. O alt tehnic utilizat de Intel n arhitectura sa de 64 de
bii este utilizarea unor cuvinte instruciune foarte lungi sau VLIW (Very Long Instruction
Word).
O unitate central VLIW va prelua (fetch) un bloc mare de octei (41 n cazul
Fig. 8.4. Microprocesor cu arhitectur Harvard intern i arhitectur Von Neumann extern
CPU
EU
Mem.
cache
date
BIU
Mem. cache
instruciuni
Magistrale
adrese i date
i t i
Coad pentru
preluare

De reinut !
Memoria Cache este utilizat pentru depozitarea informaiilor n timpul
transportului dinspre i spre microprocesor. Memoria Cache contribuie la
creterea performanelor, pentru c microprocesorul are acces la aceste
informaii mai rapid dect la cele din memoria RAM. Dac informaiile
nc exist n Cache, sistemul nu trebuie s le ia din RAM. La
microprocesoarele 486, Pentium, PentiumPro memoria Cache se mai
numeste i cache intern, este construit n microprocesor. Alte sisteme
conin un cache extern, construit ca un cip de memorie aflat pe placa de
baz.



SISTEME CU MICROPROCESOARE
143
8. Tehnici pentru mbuntirea performanelor microprocesoarelor
procesorului IA-64 Itanium) pe care l va decodifica i executa ntr-un singur pas. Acest bloc
conine de fapt dou sau mai multe instruciuni. Operarea VLIW cere ca programatorul sau
compilatorul s programeze corect secvena instruciunilor din fiecare bloc astfel ca s nu
apar hazarduri sau conflicte, dar odat aceast cerin ndeplinit, se pot executa trei sau mai
multe instruciuni per ciclu de ceas.
IA-64 nu este singurul procesor care utilizeaz arhitectura VLIW un alt exemplu fiind
procesorul Crusoe al firmei Transmeta. Crusoe este diferit de IA-64 i prin aceea c nu
suport execuia nativ a instruciunilor IA-32. Crusoe va translata instruciunile 80x86 (i
IA-32) n instruciuni proprii VLIW, tehnic numit "code morphing". Codul rezultat este cu
50% mai lent dect codul nativ IA-32, dar Crusoe mai are i alte avantaje care compenseaz
aceast scdere a performanelor. Trebuie menionat c IA-32 nu folosete VLIW dar acest
concept arhitectural prezint importan dac vom dori s utilizm noile procesoare Itanium
sau Crusoe.

8.5.2. Prezentare funcional
Arhitectura VLIW reprezint una dintre cele mai eficiente soluii n proiectarea
microprocesoarelor. Pentru ca un procesor s lucreze mai repede exist dou posibiliti:
creterea frecvenei ceasului;
execuia mai multor operaii pe fiecare ciclu de ceas.
Creterea frecvenei ceasului necesit inventarea unor procese de fabricare i adoptarea
unor arhitecturi (cum sunt benzile de asamblare mai lungi), care s menin circuitul ct mai
ocupat cu execuia task-urilor.
Execuia mai multor operaii pe un ciclu de ceas necesit integrarea de uniti
funcionale multiple pe acelai chip, care s permit execuia n paralel a task-urilor.
Problema planificrii task-urilor este astfel crucial n proiectarea procesoarelor moderne.
Procesoarele superscalare actuale realizeaz acest lucru prin hardware pentru rezolvarea
dependenelor de instruciuni. Hardware-ul de planificare crete ns geometric cu numrul
de uniti funcionale i conduce la limitri de implementare.
Alternativa este de a lsa software-ul s fac planificarea task-urilor, ceea ce chiar
realizeaz arhitectura VLIW.
Se prezint o arhitectura general VLIW (Fig. 8.5) care const ntr-o colecie de uniti
funcionale (sumatoare, multiplicatoare, anticipare ramificaii etc), conectate printr-o
magistral, plus registre i memorii intermediare.


SISTEME CU MICROPROCESOARE

144
8. Tehnici pentru mbuntirea performanelor microprocesoarelor

















O funcie important a procesoarelor VLIW este aceea c pot implementa vechile seturi
de instruciuni CISC pentru c programarea procesorului VLIW este foarte asemntoare cu
scrierea de microcod, putndu-se astfel conserva programul.
Datorit lungimii foarte mari a cuvntului de instruciune i pentru a elimina creterea
complexitii hardware-ului, procesoarele VLIW utilizeaz un compilator complex care
preia instruciunile i le pune ntr-o secven de cod liniar, astfel nct ele s formeze un
cuvnt de instruciune foarte lung, din care instruciunile pot fi executate n paralel, evitndu-
se conflictele de date.
Compilatorul utilizat de procesoarele VLIW trebuie s cunoasc microarhitectura
procesorului VLIW pentru care compileaz codul program, deoarece orice cod main pe care
l produce ruleaz bine numai pe procesorul respective. Orice rulare pe o nou generaie de
procesor VLIW presupune o recompilare a codului.
Compatibilitatea cu noile generaii poate fi totui pstrat prin folosirea unor tehnici
hardware sau software adecvate.
Datorit facilitilor prezentate mai sus performana procesoarelor VLIW este de 10
pn la 30 de ori mai bun dect un procesor convenional.

Fig. 8.5. Arhitectura general VLIW

SISTEME CU MICROPROCESOARE
145
8. Tehnici pentru mbuntirea performanelor microprocesoarelor
Un exemplu de utilizare pentru arhitecturaVLIW l reprezint Procesorul Intel Itanium
IA-64
Acest procesor este prima implementare pe 64 bii pentru a procesa instruciuni de tip
VLIW, dezvoltat mpreun de firmele Intel i Hewlett Packard (HP).
Procesorul conine
4 uniti de prelucrare ntregi;
4 uniti multimedia;
2 uniti de ncrcare/memorare;
2 uniti de prelucrare n virgul mobil cu dubl precizie;
2 uniti de prelucrare n virgul mobil cu precizie simpl.
Acesta lucreaz la o frecven de 800 de MHz, este realizat ntr-o tehnologie de 0,18
microni i are banda de asamblare cu 10 etaje.
Arhitectura IA-64 utilizeaz un format fix de instruciuni mpachetate pe 128 bii.
Fiecare instruciune VLIW, numit multioperaie, const ntr-unul sau mai multe pachete de
128 bii, fiecare pachet avnd 3 operaii i un cmp de control.
IA-64 utilizeaz un tampon de decuplare i suport speculativ pentru a crete viteza de
execuie.
Itanium posed un set de 128 de registre generale i un alt set de 128 de registre n
virgul mobil pe 82 bii.
Arhitectura IA-64 implementeaz suport pentru algoritmul de planificare pe bucle
(software pipelining), dezvoltat de Bob Rau de la HP n cadrul unui proiect anterior (Cydra-
5); pentru aceasta s-a implementat posibilitatea de rotaie a registrelor astfel nct nu mai este
necesar desfacerea buclei i redenumirea registrelor utilizate n iteraii succesive.
IA-64 suport execuie i control speculativ utiliznd un mecanism software/hardware
propriu.
IA-64 suport de asemenea planificarea static i dinamic a ramificaiilor.
Setul de instruciuni conine i instruciuni SIMD potrivite pentru procesare multimedia.
Procesorul Itanium este probabil cea mai complex arhitectur VLIW implementat
comercial, ceea ce justific preocuprile multor alte firme de a include n proiectele lor
modelul arhitectural VLIW.





SISTEME CU MICROPROCESOARE

146
8. Tehnici pentru mbuntirea performanelor microprocesoarelor




















8.6. Multiprocesarea
8.6.1.Prezentare general

Pipeline-ul, operarea superscalar, reordonarea dinamic i VLIW sunt tehnici pe care
proiectantul de uniti centrale le utilizeaz pentru a obine execuia mai multor instruciuni n
paralel. Aceste tehnici sunt cunoscute ca implementnd un paralelism de granularitate fin
(fine-grained parallelism) i sunt utile pentru accelerarea execuiei instruciunilor ca atare.
Aa cum am vzut, adugarea de uniti funcionale crete paralelismul, crescnd astfel i
viteza de execuie, problema care se pune este ce efect are adugarea a dou sau mai multe
De reinut !
Procesoarele VLIW au mai multe caracteristici:
n primul rnd, ele au uniti funcionale independente multiple i, de
aceea, pot executa simultan multe operaii pe aceste uniti. Operaiile
sunt mpachetate ntr-o instruciune foarte lung. O astfel de instruciune
poate include operaii aritmetice (cum ar fi operaii cu ntregi i n
virgul mobil), referiri la memorie, operaii de control, deplasri de date
i ramificaii. O instruciune foarte lung trebuie s posede un set de
cmpuri pentru fiecare unitate funcional; aceasta poate avea ntre 256
i 1024 bii sau chiar mai mult. Aceste procesoare posed numai o
unitate de control, ce genereaz un cuvnt de comand lung, care
controleaz explicit unitile funcionale prin cmpuri independente.
Astfel, ele pot executa numai un singur flux de cod, deoarece controlorul
global selecteaz pentru execuie o singur instruciune foarte lung, pe
fiecare perioad de ceas. n plus, fiecare operaie poate fi executat n
band de asamblare i solicit pentru execuie un numr mic de perioade
de ceas. Procesoare utilizeaz, pentru execuia n paralel a operaiilor, un
hardware simplu i fr interblocare. Dependenele de date i resurse
sunt rezolvate nainte de execuie i controlate explicit de ctre
instruciuni. De asemenea, procesoarele utilizeaz ci paralele de date
pentru unitile funcionale independente multiple i un volum mic de
logic de control i sincronizare.

SISTEME CU MICROPROCESOARE
147
8. Tehnici pentru mbuntirea performanelor microprocesoarelor
procesoare ntr-un sistem? Aceast tehnic cunoscut ca multiprocesare poate mbunti
performanele sistemului, dei nu la fel de uniform ca cele menionate. Un sistem
multiprocesor folosete modelul MIMD. Acesta utilizeaz instruciuni multiple care opereaz
asupra unor obiecte de tip date multiple.
Sistemele multiprocesor sunt utile n cazul n care se execut mai multe programe
simultan, numite sisteme multitask. Pentru a face o difereniere de genul de paralelism
presupus de pipeline i operarea superscalar, acest gen de paralelism va fi numit paralelism
cu granularitate mare (coarse-grained parallelism).
Adugarea de procesoare multiple ntr-un sistem nu nsemn doar conectarea lor. Una
din marile probleme care apare n contextul arhitecturiilor evoluate 80x86 este ceea ce se
numete coerena memoriei cache.
Pentium III i IV suport actualizarea memoriei cache ntre dou procesoare din
sistem. Mult mai costisitorul Xeon suport mai mult de dou procesoare. Unul din domeniile
n care procesoarele RISC au un mare avantaj asupra arhitecturi-lor Intel este suportul pentru
multiprocesare. n timp ce limita atins de Intel este de 16 procesoare (Xeon), sisteme ca Sun
SPARC i altele utilizeaz pn la 64 de procesoare, cu perspective de cretere.

8.6.2.Arhitecturi de sisteme multiprocesor
Exist n principiu dou categorii de sisteme multiprocesor:
arhitectur centralizat
arhitectur distribuit
Soluia centralizat este utilizat pentru sisteme complexe. Este necesar un mecanism
de intercomunicare ntre procesoare (realizat software sau hardware) care limiteaz
performanele sistemului.
Pentru soluia distribuit deciziile se iau local de ctre procesoarele periferice.
Mecanismul de intercomunicare (uzual realizat software) este mai simplu. Este necesar
divizarea funciilor sistemului n subfuncii bine determinate care sunt atribuite procesoarelor
locale.
n practic se utilizeaz i soluii mixte , cu un procesor central i mai multe procesoare
locale.
Principalele moduri de conectare ntre dou procesoare sunt :
cu memorie comun;
cu mprirea magistralelor.


SISTEME CU MICROPROCESOARE

148
8. Tehnici pentru mbuntirea performanelor microprocesoarelor
Memoria comun este un circuit mai complex ce include memoria propriu-zis i un
controler care arbitreaz conflictele de acces ce pot apare dac cele dou procesoare cer
accesul "simultan" la memoria comun.
n cazul conectrii prin aceleai magistrale comunicarea ntre procesoare se realizeaz
tot printr-o memorie comun iar cele dou procesoare utilizeaz aceleai magistrale pentru
accesul la memoria comun. Unul dintre procesoare va fi master pn cnd primete o cerere
de magistral. Acest cerere va fi generat atunci cnd procesorul slave dorete s acceseze
memoria comun. Ciclul de magistral al procesorului slave este ntrziat (prin trecerea
acestui procesor n starea WAIT ) pn la activarea semnalului ce semnific acceptarea cererii
de magistral.





















Test de autoevaluare
1. n ce const paralelismul n execuia instruciunilor?
2. n ce const coada de preluare anticipat ("prefetch queue")?
3. n ce const un pipeline tipic?
4. n ce const arhitectura VLIW?
5. Precizai un exemplu de microprocesor din familia Intel care
utilizeaeaz arhitectura VLIW.
6. n ce const multiprocesarea?
7. Precizai arhitecturi de sisteme multiprocesor.
Lucrare de laborator
Lucrarea aferent acestei uniti de nvare se intituleaz
PROGRAMAREA N LIMBAJ DE ASAMBLARE FOLOSIND
SIMULATORUL SMS32: Programarea unor sisteme reale simulate.
Obiectivele laboratorului sunt:
Prezentarea sistemelor reale simulate incluse n simulatorul SMS32;
Studiul lucrului cu porturi;
Crearea unor programe care controleaz sistemele simulate.

SISTEME CU MICROPROCESOARE
149
8. Tehnici pentru mbuntirea performanelor microprocesoarelor
























Lucrare de verificare la Unitatea de nvare 8
Aceast unitate de nvare se va regsi n lista de subiecte pentru
examen prin urmtoarele subiecte:
1. Paralelismul - tehnica unei prelucrri mai rapide;
2. Pipeline - suprapunerea execuiei mai multor instruciuni;
3. Memoria cache - ci multiple de acces la memorie.
4. Multiprocesarea

Rspunsuri i comentarii la ntrebrile din testul de
autoevaluare
Rspunsurile la ntrebrile din testul de evaluare se gsesc n textul
unitii de nvare.

Concluzii
Performanele microprocesoarelor se afl pe o curb exponenial de la
crearea lor i pn n present. Miniaturizarea i tehnicile de design
contribuie n mod egal la aceste spectaculoase creteri. Aceast unitate
a ncercat s prezinte unele din tehnologiile care fac parte i care vor
face parte din generaiile urmtoare de procesoare.





Bibliografie
1. Dobriceanu Mircea; Sisteme cu microprocesoare; Notie de curs,
Tipografia Universitii din Craiova, 2012 i format electronic
postat pe http://www.em.ucv.ro
2. Dobriceanu Mircea; Sisteme de achiziie i microprocesoare,
Editura Universitaria Craiova, 2003, p.304, ISBN 973-8043-289-8

SISTEME CU MICROPROCESOARE

150

S-ar putea să vă placă și