Sunteți pe pagina 1din 60

Sever SPÂNULESCU

Floarea BAICU Eugen CORNEL

ARHITECTURA
CALCULATOARELOR

INDRUMAR de LABORATOR
2
CUPRINS

Laborator 1. PREZENTAREA CALCULATORULUI ŞI PRINCIPIUL DE FUNCŢIONARE ........... 5

Laborator 2. REPREZENTAREA NUMERELOR ÎN VIRGULĂ FIXĂ ŞI ÎN VIRGULĂ MOBILĂ.


OPERAŢII ARITMETICE ..................................................................................................................... 9

Laborator 3 şi 4. PORTI LOGICE FUNDAMENTALE REALIZATE IN CIRCUIT MAKER.


COMBINATII DE PORTI LOGICE .................................................................................................... 17

Laborator 5. DECODIFICATOR, DEMULTIPLEXOR CODIFICATOR, MULTIPLEXOR. ........... 23

Laborator 6. STUDIUL CIRCUITELOR BASCULANTE BISTABILE ............................................. 27

Laborator 7. TIPURI DE CIRCUITE BASCULANTE BISTABILE .................................................. 31

Laborator 8. ARHITECTURA SETULUI DE INSTRUCTIUNI ......................................................... 33

Laborator 9. PRELUCRAREA INFORMAŢIEI ÎNTR-O UNITATE ARITMETICO-LOGICĂ ...... 41

Laborator 10. FUNCŢIONAREA UNITĂŢILOR DE MEMORARE ÎNTR-UN CALCULATOR


TRANSFERURI DE DATE ŞI OPERAŢII ARITMETICE CU MEMORIA ...................................... 47

Laborator 11. TRANSFERURI PE 1 OCTET ŞI PE 2 OCTEŢI ......................................................... 51

Laborator 12. MODURI DE ADRESARE ........................................................................................... 53

Bibliografie ..................................................................................................................................... 59

3
4
Laborator 1. PREZENTAREA CALCULATORULUI
ŞI PRINCIPIUL DE FUNCŢIONARE

Orice calculator electronic actual este format din subsisteme inconectate între ele, care,
oricât de evoluate ar fi, corespund modelului original Von Neumann. Acest model a rezultat
din faptul că un calculator trebuie să conţină 5 componente care să corespundă celor 5 principii
prezentate mai anterior:
1. un mediu de intrare care să asigure preluarea datelor şi instrucţiunilor;
2. un mediu de memorare în care să fie stocate datele şi programul aferent din care să se
citească operanzi şi instrucţiuni şi în care să se poată introduce, în ordinea dorită, rezultatele;
3. un mediu de prelucrare care să efectueze operaţii aritmetice şi logice asupra
operanzilor citiţi în memorie;
4. un mediu de control capabil să interpreteze instrucţiunile extrase din memorie şi să
controleze procesul de desfăşurare a operaţiilor, în funcţie de rezultatele obţinute pe parcurs
şi
5. un mediu de ieşire care să permită extragerea rezultatelor.
Astfel Von Neumann a gândit o structură în 5 unităţi funcţionale corespunzătoare celor 5
medii:
1. Unitatea de Intrare IU (Input Unit);
2. Unitatea de Memorie MU (Memory Unit);
3. Unitatea Aritmetico-Logică ALU (Aritmetic and Logic Unit);
4. Unitatea de control UC (Control Unit) şi
5. Unitatea de ieşire OU (Output Unit).
Această structură se mai numeşte şi structura în 5 unităţia calculatorului. Unităţile sunt
interconectate între ele conform schemei simple reprezentată în figura 1.8, preluată din
https://en.wikipedia.org/wiki/von Neumannarchitecture [37].

Figura 1.1. Structura în 5 unităţi a calculatorului.

În figura 1.2 este prezentată mai detaliat această structură, cu modul de interconectare al
celor 5 unităţi şi sunt exemplificate fluxurile de date, informaţii, instrucţiuni şi comenzi.

5
Figura 1.2. Structura în 5 unităţi a calculatorului.

Interconexiunile din figură corespund următoarelor fluxuri:

În mod uzual Unitatea Artimetico-Logică şi Unitatea de Control sunt cuprinse în


procesorul computerului CPU iar unităţile de intrare şi cele de ieşire se consideră împreună,
aşa că se discută de structura în 3 unităţi a calculatorului, prezentată în figura 1.3:
1. Unitatea centrală de procesare CPU (Central Processing Unit) care conţine Unitatea
Aritmetico-Logică, o serie de regiştri şi Unitatea de Control. CPU este de fapt procesorul
computerului;
2. Unitatea de MemorieMU (Memory Unit) care este organizată pe mai multe nivele,
unele interne şi altele externe;
3. Unitatea de intrare/ieşire (I/O Unit) care conţine unităţile de intrare/ieşire.

Figura 1.3. Structura în 3 unităţi a calculatorului.

6
Modul de lucru
Identificarea unităţilor componente ale calculatorului şi părţile lor funcţionale.
Figura 1.4. Structura funcțională pe componente ale unui calculator
CPU Memoria

Aria de registre Unitatea


de Memorie Memorie
comandă RAM RAM
Unitatea aritmetică
și control
și logică

Controlere de Intrare/Ieșire

Dispozitive I/O

Hard Disk Mouse Dispozitive Alte dispozitive de


Floppy Disk Tastatură de rețea instrumentație,
CD/DVD-ROM Monitor robotică etc.
USB Disk Imprimantă

Temă de lucru:
1. Identificați care sunt componentele de bază ale unui calculator, prin scrierea
denumirilor acestora pe o coală de hârtie. Faceți o descriere pe scurt a fiecărei
componente.
2. Dându-se toate componetele necesare, să se asambleze un calculator, urmărind
etapele de mai jos:
a. Se vor plasa componentele calculatorului pe o masă întinsă.
b. Mai întâi se deschide carcasa și se introduce placa de bază
(motherboard/mainboard), asigurând-o cu șuruburile ei.
c. Se instalează microprocesorul (Intel sau AMD) în soclul (socket-ul)
corespunzător de pe placa de bază. A se acorda mare atenție la instalarea
procesorului, deoarece pinii acestuia (cazul AMD) sau pinii soclului (cazul
Intel) sunt foarte apropiați și orice greșeală de instalare va conduce la
defectarea procesorului.
d. Se instalează plăcuțele de memorie RAM în sloturile corespunzătoare de pe
placa de bază.
e. Se introduce și se asigură Hard disk-ul în interiorul carcasei cu ajutorul unor
șuruburi, apoi se conectează cu conector de tip IDE sau SATA pe placa de
bază.
f. În același mod se introduce și se conectează unitatea optic de CD/DVD-
ROM.
g. Se instalează placa video (dacă este externă) pe un slot video de tip PCI
Express. Dacă nu este externă este necesar ca placa de bază să aibă în dotare
o placă video integrată. Multe dintre procesoarele actuale au integrate pe

7
aceeași pastilă de silicon și un procesor grafic, denumit GPU (Graphical
Processing Unit, unitate de procesare grafică), ceea ce conduce la
performanțe mai mari și consum redus de energie, aceasta datoraă tehnologiei
avansate de fabricație de sub 45 nm.
h. Se instalează orice altă placă externă pe porturile PCI/PCI Express din
dotarea plăcii de bază. Spre exemplu, se pot instala plăci de captură TV, plăci
de sunet sau modem-uri.
i. Se conectează firele din dotarea carcasei pentru operarea led-urilor de
monitorizare (Power On/Off, Reset Switch, HDD led, Power led etc.) și
pentru porturile USB ale carcasei.
j. Se introduce în carcasă sursa de alimentare cu energie și se asigură cu
șuruburile din dotare. Apoi se conectează toate cablurile de la sursă în
porturile corespunzătoare de pe placa de bază (alimentare placă și procesor) și
la unitățile de intrare/ieșire (Hard disk, CD/DVD).
k. Se conectează monitorul la calculator prin cablul corespunzător (VGA, DVI,
HDMI).
l. Se conectează perifericele de intrare/ieșire, precum mouse-ul, tastatura sau
imprimanta.
m. Se conectează toate echipamentele necesare la o priză multiplă cu tensiunea
de 220 V (sursa de alimentare, monitorul și imprimanta).
n. Se verifică toate conexiunile și dacă totul este corespunzător se poate porni
calculatorul urmărind mesajele pe monitor.

8
Laborator 2. REPREZENTAREA NUMERELOR ÎN VIRGULĂ FIXĂ
ŞI ÎN VIRGULĂ MOBILĂ. OPERAŢII ARITMETICE

În funcţie de poziţia virgulei, reprezentările binare folosite în calculator pot fi


reprezentări în virgulă fixă şi reprezentări în virgulă mobilă. În registrele calculatorului
virgula nu se reprezintă fizic nicăieri dar poziţia sa este stabilită pentru fiecare dintre
modurile de reprezentare.
Reprezentarea în virgulă fixă este folosită de toate calculatoarele electronice de uz general
deoarece au procesoare ce lucrează cu numere întregi în virgulă fixă. Reprezentarea
numerelor subunitare în virgulă fixă prezintă o serie de avantaje în operaţiile de înmulţire,
întrucât nu va duce la depăşirea capacităţii de reprezentare.
Reprezentarea în virgulă mobilă numită şi reprezentare cu virgulăflotantă se utilizează
pentru numere reale foarte mari sau foarte mici. Nu toate calculatoarele sunt proiectate
pentru aritmetica în virgulă mobilă, dar ele pot efectua operaţii cu numere în virgulă mobilă
prin interpretare cu ajutorul unor programe de compilare adecvate.

2.2. Baze de numeraţie


2.2.1. Reprezentarea numerelor în diverse baze de numeraţie
Baza unui sistem de numeraţie defineşte intervalul de valori posibile pentru cifrele ce pot
fi folosite. Cele mai utilizate baze de numeraţie sunt bazele 10 (zecimal), 2 (binar), 8 (octal)
şi 16 (hexazecimal). Există şi sisteme de numeraţie în baza 3 (ternar), 12 (duodecimal), 20
(vigesimal) şi 60 (sexazecimal) [49].
În baza zece, cea folosită în mod uzual, cifrele sunt {0, 1, ..., 9}.
În baza 2 cifrele sunt, aşa cum ştie orice utilizator de calculator, 0 şi 1. Numerele în baza
2 se reprezintă ca şiruri lungi de 0 şi 1.
Reprezentarea primelor 16 cifre în principalele baze de numeraţie
Baza 10 Baza 2 Baza 8 Baza 16
0 0 0 0
1 1 1 1
2 10 2 2
3 11 3 3
4 100 4 4
5 101 5 5
6 110 6 6
7 111 7 7
8 1000 10 8
9 1001 11 9
10 1010 12 A
11 1011 13 B
12 1100 14 C
13 1101 15 D
14 1110 16 E
15 1111 17 F

9
Bazele 8 şi 16 se folosesc de specialişti pentru scrierea şi citirea numerelor, pentru
reprezentarea internă a calculatorului. Aceste numere reprezintă puteri ale lui 2 şi conversia
din baza 2 în aceste baze se poate face cu uşurinţă.
Cifrele bazei 8 sunt {0, 1, ..., 7} iar cifrele bazei 16 sunt {0, 1, ..., 9} şi literele {A, B, C,
D, E, F} unde literele A ÷ F corespund valorii zecimale de la 10 la 15, aşa cum se poate
urmări în reprezentarea primelor 16 cifre din zecimal în bazele de numeraţie 2, 8 şi 16
reprezentată din tabelul anterior.

2.2.2. Conversia numerelor între baze


Pentru a converti un număr dintr-o bază x într-o altă bază y (unde xşiy sunt diferite de 10)
prima dată se face conversia din baza x în baza 10 prin metoda polinomială iar mai apoi din
baza 10 în baza y prin metoda împărţirii pentru partea întreagă şi prin metoda înmulţirii
pentru partea zecimală [50].
Formula generală pentru determinarea valorii în baza 10 a unui număr în baza k
reprezentat în virgulă fixă este:
n 1
-------------------------- (valoare număr)10   bi  k i . (2.2.1)
im

Valoarea cifrei din poziţia i este dată de bi . Se consideră n cifre la partea întreagă şi
mcifre la partea zecimală.
Exemplu: numărul (541.25)10, indicele 10 reprezintă baza, k = 10, n = 3, m = 2. Acest
număr este reprezentat ca:
5  102 + 4  101 + 1  100 + 2  10–1 + 5  10–2 =
= (500)10 + (40)10 + (1)10 + (2/10)10 + (5/100)10 = (541.25)10 .
Exemplu: numărul (1012.01)2, indicele 2 indică faptul că baza în care este reprezentat
acest număr este 2, k = 2, n = 4, m = 2. Reprezentarea lui este:
1  23 + 0  22 + 1  21 + 0  20 + 0  2–1 + 1  2–2 =
= (8)10 + (0)10 + (2)10 + (0)10 + (0/2)10 + (1/4)10= (12.25)12.
Această modalitate de conversie dintr-o bază arbitrară în baza 10 se numeşte metoda
polinomială.
În această modalitate de reprezentare a numerelor în baza 2 se folosesc noţiunile de cel
mai semnificativbit (MSB-bitul din stânga, prin convenţie) respectiv cel mai puţin
semnificativbit (LSB-bitul din dreapta prin convenţie).
Cea mai simplă metodă de conversie din baza 10 în baza 2 este să convertim separat
partea întreagă şi apoi partea zecimală. De exemplu pentru a converti 29.375 din baza 10 în
baza 2 se procedează în două etape:
i. conversia întregului;
ii. conversia părţii fracţionare.
Conversia părţii întregi se face prin împărţiri succesive la baza în care se face conversia şi
reţinerea resturilor, de aceea metoda se numeşte metoda resturilor. Primul rest obţinut
reprezintă cifra cea mai puţin semnificativă (LSB) a numărului întreg convertit. La a două
împărţire deîmpărţitul este câtul de la împărţirea precedentă. Procesul se continuă până se
obţine câtul zero. Orice număr înteg din baza 10 poate fi convertit în orice altă bază, prin
împărţiri succesive la baza în care se face conversia.
Pentru exemplificare se converteşte (29.375)10 în baza 2.

10
Mai întâi se converteşte partea întreagă prin împărțiri succesive:

Întreg Rest
29:2 14 1 LSB
14:2 7 0
7:2 3 1
3:2 1 1
1:2 0 1 MSB
(29)2 = (11101)

Conversia părţii fracţionare se face prin înmulţiri succesive. Multiplicatorul este baza în
care se face conversia. Ţinem seama că partea fracţionară este mai mică decât 1 iar prin
înmulţirea cu 2 se va obţine un rezultat mai mic decât 2, aşa că partea întreagă a acestui
rezultat va fi chiar cifra cea mai semnificativă a părţii fracţionare a numărului în baza 2. La
operaţia următoare se înmulţeşte cu 2 partea fracţionară a rezultatului obţinut anterior şi
operaţia se repetă până se obţine partea fracţionară 0 sau până la obţinerea numărului de cifre
dorit. Pentru exemplul ales se prezintă calculul mai jos. aşa cum se poate urmări în exemplul
de mai jos:

Partea
întreagă MSB
.375  2 0+75
0
.75  2 1+5 1
.5  2 1+0 1 LSB
(.375)l0 = (.011)2
Verificare:
Valoarea numărului în baza 10 se calculează după relaţia (2.2.1): (numărul)10 = b1  2–1+
b2  2–2 + b3  2–3 + ... + bi  2–i + ... unde bi reprezintă cifrele din reprezentarea numărului în
binar, de pe poziţia i.
(0.011)2 = 0  2–1+ 1  2–2+ 1  2–4 = 0+1/4+1/8 = 0.25 + 0125 = (0.375)10
Rezultatul conversiei lui (29.375)10 în baza 2 este aşadar (11101.011)2 .
Pentru a converti un număr din baza 2 în baza 8 se formează grupe de câte 3 cifre binare
începând de la punctul zecimal spre stânga şi spre dreapta. Dacă ultima grupă nu este
completă se adaugă zero. Fiecare astfel de triplet se converteşte direct în baza 8, în cifra
corespunzătoare. De exemplu: (10110)2 = (010)2(110)2 = (2)8(6)8 = (26)8 .
Pentru a converti un număr în baza 16 se procedează în mod similar, dar se creează grupe
de câte 4 cifre binare, aşa cum se poate vedea în exemplul: (10110110)2 = (1011)2(0110)2 =
(B)16(6)16 = (B6)16 .

2.3. Reprezentarea numerelor în virgulă fixă


2.3.1. Consideraţii generale
Vom prezenta sintetic moduri de reprezentare a numerelor pozitive şi negative (numere
cu semn) în baza 2, în virgulă fixă şi în virgulă mobilă.
În reprezentarea numerelor în virgulă fixă, poziţia virgulei este fixă faţă de şirul de biţi
prin care se reprezintă data numerică. Reprezentarea numerelor în virgulă fixă se face atât

11
pentru numere întregi cu semn sau fără semn, cât şi pentru numerele subunitare. Dacă
procesorul calculatorului lucrează în virgulă fixă cu numere subunitare, la introducerea
datelor fiecărui număr ise ataşează un factor de scară, prin care să-l transforme într-un
număr subunitar. Aliniamentul virgulei este făcut de programul de încărcare în memorie. În
compilatoarele scrise pentru virgulă fixă, factorul de scară este tratat de compilator, astfel
încât utilizatorul limbajelor de nivel înalt nu trebuie să ţină seama de acest aspect la
efectuarea operaţiilor [49].
Pentrunumerele cu semn, întotdeauna pe prima poziţie binară din partea stânga se
reprezintă semnul, convenţia fiind ca bitul 0 să reprezinte semn pozitiv iar bitul 1 semn
negativ.
Reprezentarea numerelor întregi cu semn urmează regula din figura 2.1 a), iar a celor
subunitare regula din figura 2.1.b).

Nîntreg = bn–1bn–2bn–3 … b2b1b0 Nsubunitar = b0b–1b–2b–3 … b– (n – 1)

semn MSB LSB semn MSB LSB


a) b)
Figura 2.1.Reprezentarea numerelor cu virgulă fixă cu semn.
a) numere întregi; b) numere subunitare.
Într-un sistem de numeraţie cu virgulă fixă, fiecare număr are acelaşi număr de cifre iar
punctul zecimal este întotdeauna în aceeaşi poziţie.
Diferenţa dintre reprezentarea numerelor cu virgulă fixă pe hârtie şi în calculator este că
în calculatorpunctul zecimal nu se scrie nicăieri, el se consideră că se află într-o anumită
poziţie, mereu aceeaşi. Se spune că punctul zecimal se află doar în mintea programatorului.

2.6. Operaţii aritmetice cu numere binare


Cu numerele binare se pot efectua toate operaţiile aritmetice şi algebrice care sunt
efectuate cu numerele zecimale, respectiv adunare, scădere, înmulţire, împărţire, ridicarea la
putere, extragere de radicali, funcţii trigonometrice, logaritmice comparare ş.a.m.d. Cele mai
multe dintre operaţii se reduc la operaţii de adunare, cu respectarea unor reguli prestabilite.

2.6.1. Adunarea în binar


Tabla adunării a două cifre binare este următoarea:
0+0=0
0+1=1
1+0=1
1 + 1 = 10 (cu depăşire, transport, carry).
Ultimul rând de mai sus se citeşte: unu plus unu este egal cu unu-zero (în baza 2)
respectiv 1 0 = 21 + 0 = (2)12.
Pe baza regulilor prezentate mai înainte se pot aduna oricare 2 numere binare A şi B.
Exemplu: vom aduna numerele A şi B unde:
– valoarea lui A este:
(23) 10 = (1 0 1 1 1)2 = 24 + 22 + 21 + 20 = 16 + 4 + 2 + 1
– valoarea lui B este:
(17) 10 = (1 0 0 0 1)2 = 24 + 20 = 16 + 1.

12
Pentru adunare se aşează numerele unul sub altul şi se începe de la dreapta, ţinând seama
de transporturile rezultate din depăşirea de pe poziţia anterioară.
1 1 1 1 transport (carry out)
A + 1 0 1 1 1
B 1 0 0 0 1
S = 1 0 1 0 0 0
Valoarea sumei este (101000)2, respectiv 25 + 23 = 32 + 8 = 40.
Într-adevăr (23)10 + (17)10 = (40)10

2.6.2. Scăderea în binar


Scăderea în baza doi se realizează asemănător cu adunarea ținând seama că tabla scăderii
în binar este:
0−0=0
0 − 1 = 1 (cu împrumut, cary in )
1−0=1
1 − 1 = 0.
Se pot scădea orice numere binare. Operaţia se execută poziţie cu poziţie, de la dreapta la
stânga, la nevoie făcând un împrumut de la poziţia din stânga, un cary in.
Exemplu: vom scădea din numărul A numărul B unde:
– valoarea lui A este:
(23) 10 = (1 0 1 1 1)2 = 24 + 22 + 21 + 20 = 16 + 4 + 2 + 1
– valoarea lui B este:
(13) 10 = (1 1 0 1 )2 = 23 + 22 + 20 = 8 + 4 + 1
Pentru scădere se aşează de asemenea numerele unul sub altul şi se începe de la dreapta.
* împrumut (carry in)
A – 1 0 1 1 1
B 1 1 0 1
D = 1 0 1 0

Valoarea diferenţei este (1010)2,respectiv23 + 22 = 8 + 2 = 12.


Într-adevăr (23)10 – (13)10 = (10)10
Scăderea unui număr în binar se poate realiza prin adunarea complementului descăzutului
(acelaşi număr cu semn schimbat). La calculatoare, pentru a schimba semnul unui număr, se
foloseşte complementul faţă de 2, C2.

2.6.3. Înmulţirea în binar


Înmulţirea (multiplicarea) în binar se bazează, ca şi în sistemul zecimal, pe adunare. Tabla
înmulţirii în binar este următoarea:
0×0=0
0×1=0
1×0=0
1×1=1

13
Pentru a înmulţii numerele binare A şi B se fac întâi produsele parţiale (P i) ale lui A cu
fiecare cifră binară a lui B, luate de la dreapta la stânga şi apoi se însumează rezultatele
parţiale între ele. Produsele parţiale ale fiecărei cifre din B cu A sunt şi ele simple:
– dacă cifra din B este un 0, atunci şi produsul parţial este 0 şi nu are efect asupra
adunării;
– dacă cifra din B este un 1, atunci produsul parţial al lui A cu 1 este chiar A.
Exemplu: vom înmulţi numerele A şi B folosite în exemplul de la adunare:
A × 1 0 1 1 1
B 1 0 0 0 1
P0 1 0 1 1 1
P1 0 0 0 0 0
P4 1 0 1 1 1
P = 1 1 0 0 0 0 1 1 1

Valoarea produsului este:


2 + 27 + 22 + 21 + 20 = 256 + 128 + 4 + 2 + 1 = 391.
8

Într-adevăr (23) 10 × (17) 10 = (391) 10

2.6.4. Împărţirea în binar


Împărţirea în binar se aseamănă cu cea obişnuită, zecimală. Când numărul A trebuie
împărţit la numărul B, pot apărea 2 situații:
− împărţire exactă, la care interesează şi se calculează şi cifrele de după virgulă;
− împărţire cu rest, când împărţitorul B nu se cuprinde exact în deîmpărţitul A. Calculele
se opresc acolo unde ar trebui să fie virgula, dar din deîmpărţit rămâne un rest care trebuie
specificat. Împărţirea poate continua şi după virgulă, până când se obţine precizia dorită.
Împărţirea în binar constă într-un şir de scăderi. De fiecare dată când împărţitorul încape
în cifrele deîmpărţitului se pune cifra 1 la cât şi se procedează ca în împărţirea normală.
Când împărţitorul nu încape în acelaşi număr de cifre ale deîmpărţitului, se pune zero la cât,
se „coboară” următoarea cifră spre dreapta din deîmpărţit şi se continuă până când
împărţitorul încape în deîmpărţit. Restul reprezintă ultima linie.
Exemplu de împărţire în binar fără rest:
Vom împărţi numărul A la numărul B unde:
– valoarea lui A este:
(42) 10 = (1 0 1 0 1 0)2 = 25 + 23 + 21 = 32 + 8 + 1
– valoarea lui B este:
(7) 10 = (1 1 1)2 = 22 + 21 + 20 = 4 + 2 + 1
* Împrumut
A : 1 0 1 0 1 0 Câtul
B 1 1 1
1 1 1 1
0 0 1 1 1 1
1 1 1
0 0 0 0 0

Valoarea câtului obţinut este 0 1 1, adică: 22 + 21 = 4 + 2 = 6.


Restul se citeşte pe ultima linie, în exemplul prezentat 0 0 0 0.

14
(43)10 : (7)10 = (6)10 fărărest.
Exemplu de împărţire în binar cu rest:
Vom împărţi numărul A la numărul B unde:
– valoarea lui A este:
(45)10 = (1 0 1 1 0 1)2 = 25 + 23 + 22 + 20 = 32 + 8 + 4 + 1
– valoarea lui B este:
(7)10 = (1 1 1)2 = 22 + 21 + 20 = 4 + 2 + 1.

* Împrumut
A : 1 0 1 1 0 1 Câtul
B 1 1 1
1 1 1 1
0 1 0 0 0 1
1 1 1
0 0 1 1 0
Valoarea câtului este este 0 1 1, adică: 2 + 2 = 4 + 2 = 6.
2 1

În acest caz, restul este pe ultima linie (0 0 1 1)2 = (3)12.


Într-adevăr (47)10 : (7)10 = (6)10 rest (3)10.

15
16
Laborator 3 şi 4. PORTI LOGICE FUNDAMENTALE REALIZATE IN
CIRCUIT MAKER. COMBINATII DE PORTI LOGICE

3.1. Prezentarea programului Circuit Maker,


Programul Circuit Maker, variantaStudent este disponibil liber pe Internet si poate fi
utilizat pentru:
- crearea unui circuit electronic cu elemente pasive, active (analogice sau digitale),
surse de semnal (continuu, alternativ, impulsuri de diferite forme etc.);
- modificarea unui circuit existent;
- analiza unor semnale de iesire (sau in anumite puncte ale circuitelor complexe), in
functie de semnale de intrare sau de alti parametri ai circuitului, de timp;
- captura de imagini direct de pe ecranul monitorului etc.
Programul ofera un meniu propriu si o bara cu butoane de comenzi, care sunt
prezentate in figura 3.1, preluata de pe ecranul monitorului. Au fost adaugate numere pentru
fiecare buton de comandă pentru a se putea face mai usor referire in text si pentru
identificarea lor cu eficienta.

Figura 3.1. Meniul si bara cu butoanele de comenzi a programului


Circuit Maker, Student Version
Semnificatia butoanelor de pe bara este urmatoarea (de la stanga la dreapta):
11 - Creare circuit nou;
12 - Deschidere fisier cu circuit existent deja;
13 - Salvare fisier nou creat;
14 - Imprimare circuit;
15 - Cursor utilizat pentru editare dispozitive, fire sau text;
16 - Fire pentru circuit;
17 - Caseta text;
18 - Utilitar pentru stergerea de dispozitive, fire etc.;
19 - Tool pentru zoom, marire a circuitului;
10 - Utilitar pentru rotirea unui dispozitiv;
11 - Utilitar pentru afisarea unui dispozitiv in oglinda;
12 - Utilitar Digital/Analog: Simulation mode, de unde se poate selecta modul Digital
sau Analog in functie de tipul circuitului studiat;
13 - Utilitar pentru resetare, utilizat pentru initializarea simularilor analogice si digitale;
14 - Treapta: utilizat pentru a trece la o treapta superioara a simularii;
15 - Utilitar pentru Pornirea/Oprirea simularilor;
16 - Utilitar pentru sonda de masura: utilizat pentru a indica starea logica pentru
circuitele digitale sau reprezentarea datelor analogice ce vor fi afisate pe grafic;
17 - Utilitar pentru urmarire si indicarea starii nodurilor;
18 - Utilitar pentru afisarea formelor de unda;
19 - Dispozitive: aici se pot gasi toate elementele, care sunt necesare pentru realizarea unui
circuit (atat dispozitive analogice/digitale, in functie de selectia realizata cu butonul nr. 12, cat si
surse, conectori, intrerupatoare etc.), numit in continuare deschizator al bibliotecii de dispozitive ;
20 - Utilitar pentru cautarea unui dispozitiv dupa nume, serie sau descriere;

17
21 - Utilitar pentru a crea un macro;
22 - Ajutor (Help);
23 - Utilitar pentru exportarea circuitului.

3.2. Realizarea unui circuit pentru studiu

Programul ofera o serie de facilitati pentru realizarea unui circuit nou de studiu sau
pentru a modifica un circuit vechi, adaptat unor cerinte specifice. Programul ofera o serie de
circuite demonstrative care pot fi utilizate pentru a usura lucrul la realizarea circuitelor de
studiu si pentru a intelege modul de functionare al acestui program si al circuitelor
fundamentale realizate cu componente electronice.
Pentru a realiza o schema de masura sau un circuit nou, utilizand programul Circuit
Maker, variantaStudent, se apeleaza la meniul Device pentru alegerea elementelor pentru
schema. Se utilizeaza butonul Device Class(Selectorul de dispozitive ), selectand mai intai
categoria (Digital sau Analog), apoi Major Device Class, mai apoi Tipul de dispozitiv si in
final, Simbolul dispozitivului, dintre cele oferite de biblioteca programului, dupa cum se poate
urmari in figura 1.2. Se pozitioneaza dispozitivele pe locurile unde dorim amplasarea lor,
conform proiectului schemei circuitului ales. Programul ofera inca o serie de facilitati
referitor la dispozitivele alese, dupa cum se poate urmari in figura, posibilitatea de a alege
chiar o anumita componenta cu un anumit cod.
Se realizeaza un circuit trasand linii, care sa uneasca simbolurile dispozitivelor
selectate, utilizand pentru aceasta facilitatea butonului Wire tool (butonul notat cu 6 in figura
1.1).Trasarea este posibila numai atunci cand langa componenta de unde va porni linia este
activat un mic dreptunghi (semnalizat cu rosu). Se procedeaza in mai multe etape, pentru
fiecare linie pe care dorim s-o trasam.
O linie gresita se poate sterge utilizand acelasi cursor, pozitionat pe fir. In momentul in
care aceasta este marcata cu coloarea rosie, se face un singur clik si linia dispare. In mod
identic se procedeaza pentru stergerea unei componente amplasate intr-o pozitie incorecta,
utilizand butonul 5 (Select, Move or Delet component, wire or text) sau butonul 8 (Delete).
Componentele se pot muta in interiorul circuitului, utilizand butonul 5.
Un circuit vechi poate fi modificat in mod asemanator, stergand componente, fire
existente si adaugand altele noi.
Pe circuitul realizat se poate introduce un text explicativ cu ajutorul butonului 7 (Add
text ).

Figura 3.2. Caseta cu biblioteca de dispozitive a programului

18
3.3 Studiul portilor logice standard
3.3.1. Utilizand programul Circuit Maker, Student Version, se selecteaza, dintre dispozivele
digitale oferite de program, circuitele logice simple: NU, SI, SAU, SI-NU, SAU-NU, XOR si XOR-
NU. Folosind facilitatile oferite de program (fire, comutatoare etc.) se realizeaza circuite logice
pentru fiecare functie logica elementara prezentata la punctul 8.2, conform exemplului din figura 8.7,
asa cum este indicat la punctul 1.3.1 din laboratorul nr. 1. Pentru indicarea starii logice la iesire in
functie de nivelul semnalului de la intrare, se utilizeaza diodele luminiscente amplasate la iesirea
circuitelor.
Se aleg valorile tensiunilor aplicate la intrare pentru starea logica 1 si starea logica 0, care
corespund celor doua pozitii ale comutatorului (inchis, respectiv deschis).
Nota: Atentie la alegerea comutatoarelor, de preferat modelul prezentat in exemplul din figura 8.7.
3.3.2. Sa se scrie expresiile functiilor la iesire si sa se completeze tabele de adevar pentru
fiecare functie.
Sa se urmareasca semnalizarile diodelor luminiscente si sa se compare cu tabelul de adevar
calculat.
In figura 3.3 este realizat un circuit demonstrativ pentru urmarirea modului de functionare a
circuitelor logice elementare studiate in lucrare. Diodele luminiscente indica starea logica la iesire in
functie de nivelul semnalului de la intrare. Pentru exemplul considerat, la intrarea starii logice 1 ii
corespunde o tensiune de 5 V, iar starii logice 0 ii corespunde o tensiune 0, respectiv comutatorul
deschis.

Figura 3.3. Circuite logice elementare (standard)


3.3.3. Pentru circuitele logice realizate sa se studieze pentru cazul in care semnalul de intrare
este negat. Sa se completeze tabelele de adevar corespunzatoare.

3.4 Porti logice complexe


3.4.1. Se realizeaza circuitul logic cu elemente NU si NAND prezentat in figura 9.3, utilizand
facilitatile oferite de programul Circuit Maker, Student Version respectiv se selecteaza dintre
dispozivele digitale circuitele logice simple necesare NU si NAND, conform schemei, apoi fire si
comutatoare oferite de program.
Nota: Atentie la alegerea comutatoarelor, de preferat modelul din exemplul din figura 3.4.

19
Pentru indicarea starii logice la iesire, in functie de nivelul semnalului de la intrare se
utilizeaza diodele luminiscente amplasate la iesirea circuitelor, asa cum se poate urmari in figura. L1,
..., L4 reprezinta diode luminiscente, care indica functiile f1, ..., f4, astfel pentru starea 0 a functiei
fi dioda Li este stinsa (apare alba pe ecran), iar pentru starea 1 este aprinsa (rosu) pe ecran.

Figura 3.4. Circuit logic realizat cu elemente NU si NAND


Se aleg valorile tensiunilor aplicate la intrare pentru starea logica 1 si starea logica 0, care
corespund celor doua pozitii ale comutatorul (inchis, respectiv deschis).
3.4.2. Sa se scrie expresiile functiilor f 1, f 2, f 3, f 4 si a functiei calculata de circuitul intreg si sa
se completeze tabelul de adevar 3.1.
Sa se urmareasca semnalizarile diodelor luminiscente si sa se compare cu tabelul de adevar
calculat.
Tabel 3.1
a1 a2 a3 f1 f2 f3 f4
0 0
0 1
0
1 0
1 1
0 0
0 1
1
1 0
1 1

3.5. Circuit logic cu elemente NU si NOR


3.5.1. Se modifica circuitul din figura 9.3 utilizand elemente NOR in locul celor NAND si se
realizeaza circuitul logic prezentat in figura 9.4,

20
Figura 3.5. Circuit logic cu elemente NU si NOR
3.5.2. Sa se scrie expresiile functiilor f 1, f 2, f 3, f 4 si a functiei calculate de circuitul intreg si sa se
completeze tabelul de adevar de mai jos:
a1 a2 a3 f1 f2 f3 f4
0 0
0 1
0
1 0
1 1
0 0
0 1
1
1 0
1 1

Sa se urmareasca semnalizarile diodelor luminiscente si sa se compare cu tabelul de adevar


calculat.
Sa se compare tabelul de adevar cu tabelul cel teoretic. Sa se justifice deosebirile.
3.5.3. Pentru ambele circuite logice complexe realizate sa se studieze pentru cazul in care a1
este negat sau a2 nu este negat. Sa se completeze tabelele de adevar corespunzatoare.
3.5.4. Sa se realizeze alte circuite logice pornind de la porti elementare, utilizand facilitatile
oferte de programul Circuit Maker, Student Version.

21
22
Laborator 5. DECODIFICATOR, DEMULTIPLEXOR,
CODIFICATOR, MULTIPLEXOR.

5.1. Decodificator
5.1.1. Se realizeaza schema unui decodificator cu ajutorul programului Circuit Maker,Student
Version.
Pentru aceasta se aleg elementele pentru schema utilizand butonul Selectorul de dispozitive,
selectand mai intai Clasa -Digitalbases, apoi Tipul de dispozitiv si mai apoi Simbolul dispozitivului, dintre
cele oferite de biblioteca programului. Se realizeaza un circuit, trasand linii care sa uneasca simbolurile
selectate. Se pozitioneaza pe fiecare intrare un comutator Switch, alegand unul dintre cele oferite de baza
de comutatoare a programului, utilizand butonul Switel logic simple.
5.1.2. Se stabilesc valorile tensiunilor pentru cele doua nivele logice: Pentru semnal logic
1 tensiunea este de 5 V, iar pentru semnal logic 0 tensiunea este de 0 V. Valoarea tensiunii de intrare
se fixeaza la 10 V.
5.1.3. Se verifica realizarea functiilor la iesire comutand corespunzator comutatoarele si
urmarind aprinderea LED-urilor L1, L2, L3, L4 din schema realizata (din figura 5.1).

Figura 5.1. Decodificator cu 2 intrari si 4 iesiri


5.1.4. Sa se realizeze in laborator un decodificator elementar si unul cu trei intrari (respectiv 2 3
iesiri). Sa se intocmeasca tabelul de adevar corespunzator, urmarind semnalizarile LED-urilor de pe
iesire.

5.2. Demultiplexor
5.2.1. Se realizeaza schema unui demultiplexor cu doua intrari, a si b, plus o intrare de validare
E (si respectiv 4 iesiri, f0, f1, f2, f3), cu ajutorul aceluiasi program, alegand elementele pentru schema,
dintre cele oferite de program. Se realizeaza un circuit, trasand linii care sa uneasca simbolurile
selectate, se pozitioneaza pe fiecare intrare un comutator.
5.2.2. Se stabilesc valorile tensiunilor pentru cele doua nivele logice: pentru nivel logic
1 tensiunea este de 5 V, iar pentru nivel logic 0 tensiunea este de 0 V. Valoarea tensiunii de intrare se
fixeaza la 10 V.
5.2. Se verifica realizarea functiilor la iesire, comutand corespunzator comutatoarele si
urmarind aprinderea LED-urilor L1, L2, L3, L4 din schema 5.2.

23
Figura 5.2. Demultiplexor cu 2 intrari de date
5.2.4. Sa se realizeze in laborator un demultiplexor cu trei intrari de date si o intrare de
validare. Sa se intocmeasca tabelul de adevar corespunzator, urmarind semnalizarile LED-urilor de
pe iesire.

5.3. Codificator
5.3.1. Se realizeaza schema unui codificator cu 10 intrari (si respectiv 4 iesiri), cum este cea
din figura 5.9, cu ajutorul programului Circuit Maker, Student Version. Pentru aceasta se aleg
elementele pentru schema, dintre cele oferite de program, in acelasi mod ca la decodificator. Se
realizeaza un circuit, trasand linii care sa uneasca simbolurile selectate, se pozitioneaza pe fiecare
intrare un comutator.
5.3.2. Valorile tensiunilor celor doua nivele logice sunt: pentru nivelul logic 1 tensiunea este
de 5 V, iar pentru nivelul logic 0 tensiunea este de 0 V. Valoarea tensiunii de intrare se fixeaza la 10
V. Se verifica realizarea functiilor la iesire, comutand corespunzator comutatoarele si urmarind
aprinderea LED-urilor L1, L2, L3, L4 din schema 5.3.

Figura 5.3. Codificator cu 10 intrari

24
5.4. Multiplexor
5.4.1. Se realizeaza schema unui multiplexor cu doua intrari de date, a si b, plus o intrare de
validare E si una de selectie si, respectiv, o singura iesire cu ajutorul programului Circuit Maker, Student
Version,alegand elementele necesare in acelasi mod ca la decodificator. Se realizeaza un circuit, trasand
linii, care sa uneasca simbolurile selectate, se pozitioneaza pe fiecare intrare un comutator.
5.4.2. Se stabilesc valorile tensiunilor pentru cele doua nivele logice: pentru nivelul logic
1 tensiunea este de 5 V, iar pentru nivelul logic 0 tensiunea este de 0 V. Valoarea tensiunii de intrare se
fixeaza la 10 V.
5.4. Se verifica realizarea functiilor la iesire, comutand corespunzator comutatoarele si
urmarind aprinderea LED-ului L din schema 5.4.
Se urmareste realizarea urmatorului tabel de adevar.

A b E S W
1 0 1 0 A
0 1 1 1 B
1 0 0 FM FM
0 1 0 FM FM

Figura 5.4.Multiplexor cu 2 intrari de date

25
26
Laborator 6. STUDIUL CIRCUITELOR BASCULANTE BISTABILE

6.1. Principiul de funcţionare al circuitelor basculante


Un circuit basculant poate stoca fie un 0 fie un 1 logic. Starea bistabilului este dată de valoarea
curentă stocată şi se poate modifica numai la anumite momente de timp, momente impuse de o intrare
specială de comandă numită de tact sau de clock, notată CLK în această carte, noua stare a bistabilului
depinzând atât de starea sa curentă cât şi de intrarea de comandă.
Trecerea dintr-o stare în alta (adică „bascularea” circuitului) are loc într-un timp în general foarte
scurt (timp care depinde de constantele de timp ale circuitului) şi apare ca o variaţie bruscă a
mărimilor electrice de la cele două „ieşiri” ale circuitului. Procesul de basculare se declanşează fie sub
acţiunea unor semnale de comandă externe (cazul circuitului basculant bistabil şi monostabil), fie ca
urmare a proprietăţii circuitului de a bascula spontan dintr-o stare în cealaltă (cazul circuitului
basculant astabil).
Cel mai simplu circuit basculant (de fapt circuit latch) are o intrare de Set, notată S (de la cuvântul
Set din limba engleză care se traduce cu înregistrare) activă pe 1 sau S (Set negat) activă pe 0 şi o
intrare de Reset (de la cuvântul Reset din limba engleză care se traduce cu ştergere) notată R, activă
pe 1 sau R (Reset negat) activă pe 0 . Prin convenţie S sau S comandă înscrierea unui eveniment
(aducerea circuitului în starea 1), iar R sau R comandă uitarea lui (prin aducerea circuitului în starea
0). Este realizat cu elemente logice de tip NOR sau NAND cu două tranzistoare (sau cu alte elemente
electronice active) cuplate între ele prin impedanţele Z1 şi Z 2 şi o buclă de reacţie pozitivă,
supraunitară [1].
În funcţie de natura şi valoarea impedanţelor de cuplaj se disting trei variante principale de circuite
basculante: circuit basculant astabil, circuit basculant monostabil şi circuit basculant bistabil.
Circuitul basculant astabil (CBA), numit şi multivibrator, are ambele stări cvasistabile, ritmul cu care
îşi schimbă stările este determinat de valorile rezistenţelor şi capacităţilor care formează impedanţele
circuitului.
Circuitul basculant monostabil (CBM) are o stare permanent stabilă şi una cvasistabilă. Una din
impedanţe este pur capacitivă, iar cealalată este rezistivă [1, 15].
În laborator vom studia numai circuitul basculant bistabil, de tipul celui prezentat în figura 61.

Figura 6.1. Circuit basculant bistabilrealizat cu componente discrete

27
6.2. Circuite basculante bistabile R-S
Circuitul basculant bistabil (CBB), numit şi flip-flop, este reprezentat în figura 6.2. Este un circuit
basculant care rămâne permanent în oricare din cele două stări, schimbarea din una în cealaltă fiind
posibilă numai sub acţiunea unui semnal (impuls) extern. Impedanţele de cuplaj pentru CBB sunt
rezistente. Uneori se folosesc şi capacităţi conectate în paralel care au rolul de a reduce timpul de
basculare, numite capacităţi de accelerare. CBB preia eşantioane din semnalele de intrare şi îşi
modifică semnalele de ieşire numai în momente determinate de semnalul extern. CBB sunt elemente
de bază în realizarea circuitele digitale complexe (memorii, microprocesoare). Cel mai folosit circuit
de tip bistabil este circuitul basculant de tip R-S. Se numeşte bistabil R-S sau latch simplu (se poate
traduce prin zăvor întrucât circuitul poate fi zăvorât într-o anumită stare la primirea unei comenzi
externe). Un CBB de tip R-S poate fi format din două porţi NOR sau din două porţi NAND, intrările
fiind cuplate intersectat la ieşiri aşa cum este reprezentat în figura 6.2 a) şi b).

a) b)
Figura 6.2. Circuite basculante bistabile realizate
cu porţi logice. a) NOR şi b) NANDI.
Operaţiile logice pe care le poate efectua un bistabil cu porţi NOR reprezentat în figura 6.2 a) pot fi
exprimate prin relaţiile următoare şi tabelul de stări de mai jos [15]
Q  S  QR
Q  R  QS .
R S Q Q
0 0 0 0(FM)
0 1 1 0
1 0 0 1
1 1 * *

Urmărind fiecare din cele două bucle de reacţie, se poate urmări că pentru S  1 (şi R  0) se
obţine [15]:
Q  S  QR  1  Q 1  1  Q  Q ( 1)
Q  R  Q S  0  Q  1  0  0  0 ( 1 ).
La analiza funcţiei bistabilului R-S trebuie să se ţină seama că în momentul aplicării semnalelor,
CBB poate să se afle într-una din cele două stări (stabile) deci trebuie să se ia în consideraţie toate
combinaţiile posibile pentru ieşirea activă Qt 1 în funcţie de stările Qt existente în momentul aplicării
comenzilor.
pentru bistabili sunt valabile următoarele observatii:
a) aplicarea semnalului 0 la ambele intrări nu modifică starea bistabilului
b) aplicarea semnalului S  1 simultan cu R  0 determină Qt 1  1, indiferent de starea
bistabilului înainte de aplicarea comenzii. Această trecere a bistabilului în starea Q  1 se numeşte
poziţionare;
c) aplicarea semnalului R  1 simultan cu S  0 determină circuitul să treacă sau să rămână pe
poziţia 0, operaţie numită ştergere;

28
d) aplicarea simultană a semnalelor 1 la ambele intrări, S şi R, generează o stare nedeterminată, de
aceea comanda R  S  1 este interzisă, adică S şi R nu pot fi simultan 1 , respectiv nu putem avea
două impulsuri active la intrare .
În mod similar poate fi analizat un bistabil R-S realizat cu porţi NAND reprezentat în figura 6.2 b)
Qt 1  S  R Qt
Qt 1  R  S  Qt .
De regulă, în cazul circuitelor de tip NAND, comutarea se face prin 0 logic (adică pe front
negativ), aplicându-se semnalele R şi respectiv S la intrările bistabilului. Ca urmare, pentru a
memora bitul 1 (adică Q  1) se vor aplica la intrări semnalele S  0 şi R  1 şi invers, respectiv
S  1 şi R  0 pentru a obţine bitul 0. În acest caz este interzisă aplicarea simultană a comenzilor
R  0 şi S  0, deci condiţia obligatorie este:
R  S  0 sau R  S  1.
Pentru obţinerea ecuaţiilor logice ale ieşirilor se apelează la minimizarea funcţiilor logice Qt 1 şi
respectiv Qt 1

6.3. Studiul schemei circuitului basculant bistabil si a modului de basculare

6.3.1. Programul Circuit Maker, Student Version ofera ca circuit demonstrativ circuitul basculant
bistabil prezentate în figura 6.3. Sa se compare acest circuit cu cel teoretic.
6.3.2. Sa se studieze modul de basculare si sa se vizualizeze semnalele de pe colectorii
circuitului basculant bistabil. Sa se observe modul in care o iesire este permanent in 1 iar cealalta in
0, in contratimp, iar comutarea se face sub actiunea semnalului extern, pe frontul pozitiv al
impulsului de tact.
Sa se reprezinte cele doua semnale de iesire pe acelasi grafic
6.3.3. Sa se masoare amplitudinea semnalului se iesire si sa se calculeze 0,1 Vmax si 0,9 Vmax.
Sa se masoare timpii de comutaţie .Se noteaza valorile pentru a fi comparate cu cele de la tranzistorul
bipolar si de la celelalte circuite basculante.

6.4 Dependenta perioadei semnalului de iesirede caracteristicile circuitului

Sa se masoare perioada semnalului obtinut la cele doua iesiri si sa se compare cu frecventa


semnalului de intrare. Ce se observa?
In figura 6.5 sunt prezentate cele doua semnale de iesire suprapuse peste semnale intrare,
(semnalele de iesire sunt reprezentate cu culori foarte deschise)
Sa se modifice valorile capacitatilor si rezistentelor si din circuitele de colector ale celor doua
tranzistoare, sa se vizualizeze noua forma a semnalului, dand o noua simulare. Sa se masoare noua
perioada si sa se calculeze noua frecventa. Interpretati rezultatele. Repetati masurarile pentru timpul de
comutatie si faceti comparatii.

29
Figura 6.3. Circuit basculant bistabil:Schema de masura pentru
semnalele de iesire ale cu evidentierea punctelor de masura;

Figura 6.4. Semnalele de iesire, suprapuse Circuit basculant bistabil; c) Cele doua semnale de intrare,
suprapuse (sunt mentinute si formele semnalelor de iesire, dar cu culori foarte deschise)

Figura 6.5.:Cele doua semnale de intrare, suprapuse (sunt mentinute si formele semnalelor de iesire, dar cu culori foarte
deschise) pentru circuit basculant bistabil

30
Laborator 7. TIPURI DE CIRCUITE BASCULANTE BISTABILE

7.1. Circuit basculant bistabil R-S


7.1.1. Folosind facilitatile oferite de programul Circuit Maker, Student Version sa se
realizeze un circuit basculant bistabil de tip R-S, foloseind porti logice elementare AND si
NOR, comutatoare si diode luminiscente) asa cum se prezinta in figura 7.1. Starii logice 0 ii
corespunde tensiunea 0 iar starii logice 1 o tensiune de 5V. Valoarea minima a semnalului de
tact este de asemenea 0 iar cea maxima 5 V.
7.1.2. Sa se urmareasca functionarea circuitului şi sa se intocmeasca tabelul de adevar pe
baza semnalizarii LED-urilor si sa se compare cu tabelul de adevar teoretic.

Figura 7.1. Circuit basculant bistabil R-S


7.1.3. Sa se realizeze un circuitul folosind din biblioteca programului simbolul unui CBB
R-S, astfel incat sa se poata vizualiza forma semnalului la iesire comparativ cu cel de intrare.
Analizati modul de comutare pe frontul activ al tactului.

7.2. Circuit basculant bistabil D


7.2.1. Folosind facilitatile oferite de programul Circuit Maker, Student Version sa se
realizeze un circuit basculant bistabil de tip D, folosind porti logice elementare NOT, AND si
NOR cu trei intrari, comutatoare si diode luminiscente), asa cum se prezinta in figura 7.2.
Starii logice 0 ii corespunde tot o tensiune 0 iar starii logice 1 o tensiune de 5 V. Valoarea
minima a semnalul de tact este, de asemenea, 0 iar cea maxima 5 V.
7.2.2. Sa se urmareasca functionarea circuitului si sa se intocmeasca tabelul de adevar pe
baza semnalizarii LED-urilor si sa se compare cu tabelul de adevar teoretic.
7.2.3. Sa se realizeze un circuitul folosind din biblioteca programului simbolul unui CBB
de tip D astfel incat sa se poata vizualiza forma semnalului la iesire comparativ cu cel de
intrare. Analizati modul de comutare in afara palierului activ al tactului si evidentiati
intarzierea introdusa de acest tip de bistabil.

Figura 7.2. Circuit basculant bistabil D

31
7.3. Circuit basculant bistabil J-K
7.3.1. Circuit Maker, Student Version ofera ca circuit demonstrativ un numarator realizat
cu circuite basculant bistabil de tip J-K sub denumirea MIXED 93, prezentat in figura 7.3,a.
Acest circut poate fi folosit pentru a vizualiza forma semnalului la iesirea din fiecare bistabil.
7.3.2. Sa se studieze modul in care CBB J-K elimina capcana de
0 si 1 si pe cea a confirmarii simultane a ambelor intrari de comanda.
7.3.3. Vizualizati forma semnalului de iesire la fiecare din cele
4 CBB de tip J-K si comparati-o cu cea de la intrare. Care este semnalul de tact aplicat CBB
2, 3 si 4? Ce se observa?
In figura 7.3,b este prezentata, pentru demonstratie, forma semnalului la iesirea primului
bistabil impreuna cu semnalul de tact. S-a masurat frecventa acestui semnal. Se observa ca
perioada semnalului de iesire este dublul perioadei semnalului de tact. Interpretati!

a)

b)
Figura 7.3. Bistabili J-K: a) Circuit logic; b) Semnalul la iesire comparativ cu cel de tact

32
Laborator 8. ARHITECTURA SETULUI DE INSTRUCTIUNI

Procesoarele pot fi clasificate după numărul maxim de adrese din memoria principală în
câmpurile instrucţiunilor lor. Instrucţiunile cu doi operanzi necesită cel mult trei adrese în
memorie. Pentru rezolvarea unei anumite probleme, şi evident un timp mai lung de execuţie.
Instrucţiunile lungi, cu adrese multiple, deşi conduc la programe mai scurte, necesită circuite
electronice complexe pentru decodificare şi prelucrare.

8.1 Ciclul instrucţiunii

Ansamblul de operaţii legate de realizarea unei instrucţiuni se numeşte ciclu-instrucţiune.


Pentru execuţia unei instrucţiuni trebuie realizate următoarele două faze:
1. Citirea instrucţiunii din memorie şi transferarea ei în CPU. Această fază se numeşte
FETCH;
2. Executarea instrucţiunii de către unităţile funcţionale ale calculatorului, respectiv
generarea rezultatului. Această etapă se numeşte EXECUTE.
O secvenţă FETCH-EXECUTE pentru o instrucţiune formează ciclul instrucţiune. Aceste
două faze conţin mai multe etape şi se reiau în mod repetă în timpul rulării unui program, aşa
cum se prezintă în figura 8.1 [7].
Faza FETCH cuprinde următoarele etape succesive (paşi):
1. CPU citeşte din memorie de la adresa specificată în registrul numărător de program-PC
(Program Counter) instrucţiunea ce va fi executată şi o încarcă în registrul de instrucţiune
(RI) din UC.
2. Este identificată operaţia ce va avea loc şi sunt stabiliţi operanzii, din câmpurile
instrucţiunii.Instrucţiunea este împărţită în două câmpuri:
- câmpul operaţie (OPCODE) pe care îl dirijează în registrul de funcţie (RF);
- câmpul de adresă (ADDRESS) pe care îl stochează în registrul de adresă (RA).
3. UC decodifică OPCODE operaţie numită interpretare OPCODE.
8. UC incrementează numărătorul de program (PC) pentru a specifica adresa următoarei
instrucţiuni de executat.
Faza FETCH este obligatorie pentru orice instrucţiune întrucât ea asigură extragerea
instrucţiunii curente din memorie şi decodificarea acesteia.
După generarea adresei următoarei instrucţiuni începe faza EXECUTE, care cuprinde
următoarele etape:

33
Figura 8.1. Etapele ciclului instrucţiunii.
5. UC determină adresa efectivă a operandului sau adresele efective ale operanzilor,
folosind informaţia din registrul de adresă.
6. CPU citeşte data (datele) din memorie de la adresa calculată ca adresă efectivă şi o
extrage ca fiind operandul. Faza se numeşte FETCH OPERAND. Data este transferată în
ALU. Uneori operanzii sunt stocaţi în interiorul CPU în registrele locale ale ALU.
7. UC comandă ALU să efectueze funcţia sau operaţia specifică de OPCODE prin
procesarea operanzilor şi determinarea rezultatelor. Aceasta este faza de execuţie propriu-
zisă, cea codificată în instrucţiune.
8. Rezultatul este memorat la destinaţia corespunzătoare, în memorie sau în registrele
speciale ale CPU.
Se determină următoarea instructiune şi ciclul se reia de câte ori este nevoie pentru a
executa întreaga succesiune de instrucţiuni din program.
Anumite etape din ciclul instrucţiune pot lipsi pentru anumite instrucţiuni, de exemplu din
instrucţiunile fără operanzi lipsesc etapele 5 şi 6. În cazul instrucţiunilor cu operanzi multipli
aceste etape se repetă de un anumit număr de ori.
În cazul instrucţiunilor de salt nu sunt necesari paşii 4, 5 şi 8, iar în instrucţiunile de
comparare pasul 8 lipseşte, întrucât rezultatul nu trebuie memorat.
Totdeauna faza FETCH este unică, iar faza EXECUTE este diferită în funcţie de tipul
instrucţiunii concrete ce trebuie executată.
Un ciclu instrucţiune se execută din punct de vedere al CPU într-un ciclu maşină de
ordinul micro sau chiar nanosecunde.

34
Viteza de procesare se măsoară în kHz sau multiplii acestuia, sau numărul de
instrucţiuni/secundă (MIPS – milioane de instrucţiuni pe secundă), sau prin numărul de
operaţii în virgulă mobilă (FLOP).

8.2. Tipuri de instrucţiuni


Aşa cum am mai specificat, există mai multe tipuri de instrucţiuni pe care le poate executa
un procesor: aritmetice, logice, pentru transferul informaţiei, pentru deplasarea şi rotirea
datelor, de ramificare (pentru controlul secvenţei de program), pentru controlul procesorului,
pentru operaţii cu şiruri etc. Pentru fiecare tip de procesor instrucţiuni au forme şi sarcini
specifice. Vom prezenta pe scurt aceste tipuri de instrucţiuni pentru procesoarele Intel x86.

8.2.1 INSTRUCȚIUNI (OPERAŢII) DE TRANSFER ÎNTRE REGISTRE

Microprocesorul convenţional din seria Intel x86 are următoarele registre pentru lucrul
curent: AX, BX, CX şi DX (respectiv extensiile pe 32 biţi, EAX, EBX, ECX şi EDX), astfel:
Registrele de uz general pe 32 biţi
31 0
EAX
EBX
ECX
EDX
ESI – Source Index
EDI – Destination Index
EBP – Base Pointer
ESP – Stack Pointer
Denumiri alternative pentru (sub)registrele generale de 8 şi 16 biţi
31 16 15 8 7 0
AX
Denumiri alternative
AH AL
EAX
BX
Denumiri alternative
BH BL
EBX
CX
Denumiri alternative
CH CL
ECX
DX
Denumiri alternative
DH DL
EDX
Denumire alternative BP
EBP
Denumire alternative SI
ESI
Denumire alternative DI
EDI
Denumire alternative SP
ESP

35
Principial, pentru lucrul uzual se lucrează cu registrele de 16 biţi, cele generale putând fi
împărţite în câte două registre de 8 biţi: cel care reţine octetul inferior, notat cu sufixul L (de
la Low)şi cel care reţine octetul superior, notat cu sufixul H (de la High).
Microprocesoarele de diverse tipuri au mai multe registre, cu mai mult de 16 biţi (cele
din seriile I-386, I-486 şi Pentium ). Registrele de mai sus au de fapt la aceste procesoare un
număr de 32 de biţi, dar pot fi folosite ca registre de 16 biţi cu notatiile de mai sus. În cazul în
care se doreşte folosirea lor ca registre de 32 de biţi, denumirea lor va fi precedată de litera E
(de la "extended"), iar în preambulul programului va trebui pusă directiva .386, pentru a
preciza că este folosit un procesor de la I-386 în sus.
De asemenea, microprocesoarele conţin 4 registre de segment: CS, DS, ES, SS.
Registrele de segment pe 16 biţi
15 0
CS – Code Segment
DS – Data Segment
ES – Extra Segment
SS – Stack Segment
F
Registre
S
suplimentare pentru
G
extensia de 32 biţi
S

Registrul indicatorilor de condiţii, FLAGS de 16 biţi (respectiv, EFLAGS pe 32 biţi)


15 0
FLAGS

Registrul indicatorului de instrucţiuni (Instruction Pointer), IP de 16 biţi (respectiv, EIP


de 32 biţi)
15 0
IP – Instruction Pointer

Notaţiile folosite pentru registre în cele ce urmează sunt:


 de 8 biţi - r8: AL,AH,BL,BH,CL,CH,DL,DH;
 de 16 biţi - r16: AX,BX,CX,DX,SI,DI,BP,IP,F;
 de 32 biţi - r32: EAX,EBX,ECX,EDX,ESI,EDI,EBP,EIP,EF;
 registre de segment - rs: DS,ES,SS,CS.La procesoare de la I-386 în sus mai există
două registre suplimentare de segment, FS şi GS.

8.2.2. INSTRUCŢIUNI DE TRANSFER ÎNTRE REGISTRE

Principale instrucţiune pentru memorarea datelor în registrele microprocesorului este


instrucţiunea MOV.
Sintaxă: MOV destinaţie, sursă
Acţiune: ‘destinaţie’ ia valoarea ‘sursă’ :
destinaţie← sursă
Operanzi:
 destinaţie: r8, r16, r32, rs
(registre generale de 8, 16, 32 biţi şi registre de segment)

36
 sursă: r8,r16,r32,rs,n,nn,nnnn
(registre generale de 8, 16, 32 biţi, registre de segment şi constante de 8, 16 şi 32 biţi)

Restricţii: nu sunt posibile transferuri de tip:


-MOV rs,rs (nu sunt posibile transferuri între registre de segment)
-MOV rs,nn (nu se poate scrie o constantă direct într-un registru de segment)
-MOV cs,* (nu se poate transfera nimic în registrul de segment de cod)

Exemplul 8.1:
MOV AX, 33H ;Încarcă în AX constanta hexa 0033H
MOV DX, 1122H ;Încarcă în DX constanta hexa 1122H
MOV CL, AL ;Încarcă în CL conţinutul lui AL
MOV BL, DH ;Încarcă în BL conţinutul lui DH
MOV AH, DL ;Încarcă în AH conţinutul lui DL

Mod de lucru :
Toate constantele numerice specificate mai jos sunt hexazecimale, deci în cazul în
care nu se pune directiva .radix 16 în zona de început a programului, constantele vor fi
urmate de sufixul h.
Rularea programelor se va face cu TD (depanatorul Turbo Debugger) în modul pas cu
pas (cu tasta F7) şi după fiecare instrucţiune se va urmări în fereastra de afişare a registrelor
modificarea conţinutului acestora.
Se vor scrie şi testa următoarele programe:
P 8.1. Program de scriere în registrele AL, BL, CL şi DL a constantelor 99,AA, BB,
respectiv CC.
P8.2. Se va completa programul anterior pentru a transfera conţinutul registrului AL în
registrele BL, BH, CL, şi DH.
P 8.3. Program de scriere în registrele AX, BX, CX şi DX a constantelor 1122, 3344,
5566, respectiv 7788.
P 8.4. Se va completa programul anterior pentru a transfera conţinutul registrului
registrului BX în registrul DX, şi al registrului CX în AX.
P 8.5. Program care să transfere constanta 1234 în registrul DS şi constanta 5678 în
registrul DX.
P 8.6. Să se scrie în registrele AL şi BL, constantele 99 şi AA şi se va face apoi
interschimbarea conţinutului acestora.

8.2.3. INSTRUCŢIUNI DE INTERSCHIMBARE ÎNTRE REGISTRE

Operaţia automată de interschimbare a conţinuturilor din două registre este XCHG.


Sintaxa:
XCHG sursă1, sursă2
Acţiune: Se interschimbă conţinuturile registrelor sursă1 şi sursă2.
sursă1←sursă2
sursă2←sursă1

Operanzi: dst,src:r8,r16,r32
Restrictii:Nu există instrucţiuni de tip:
-XCHG rs,rs (interzis XCHG pentru interschimbarea a două registre de segment)
-XCHG cs,* (interzis XCHG pentru interschimbarea registrului de segment de cod cu
orice alt tip de registru)

37
Mod de lucru :
P 8.7. Se vor încarca următoarele registre astfel:
AL cu 11
BL cu 22
CX cu 3344
DX cu 5566
după care se va interschimba conţinutul celor de 8 biţi şi conţinutul celor de 16 biţi.

P 8.8. Se vor încărca registrele AL, AH, BL şi BH constantele AA,BB,CC şi DD şi


apoi se va efectua permutarea circulară a conţinutului celor 4 registre. Se vor folosi
instrucţiuni de tip XCHG, şi după terminarea rulării programului registrele vor trebui să aibă
valorile: AL=BBh, AH=CCh, BL=DDh şi BH=AAh

8.2.4. INSTRUCŢIUNI DE ADUNARE ŞI SCĂDERE

Sintaxe generale:
 ADD dst,src - Adunare : dst=dst+src;
 ADC dst,src - Adunare cu transport (CF): dst=dst+src+CF
 SUB dst,src - Scădere: dst=dst – src;
 SBB dst,src - Scădere cu transport (“carry”) sau împrumut (“borrow”):
dst=dst-src-CF;
În toate operaţiile aritmetice, se foloseşte implicit convenţia complementului faţă de
2. Astfel, numerele pozitive au bitul cel mai semnificativ (MSB) 0, iar cele negative au
MSB 1. Numerele negative vor avea valoarea diferenţei între valoarea lor absoluta şi 28n ,
unde n este numărul de octeţi folosiţi.
Exemple:
 25h=0012.0101 este un număr pozitiv, având echivalentul zecimal 37;
 0B3Ch= 0000.1011.0011.1100 este un număr pozitiv, cu echivalent zecimal 2876;
 0A7h=1012.0111 este un număr negativ (dacă este considerat de un octet), cu valoare
absoluta 167 şi valoare în complement faţă de 2 care se calculeaza conform formulei
167-28 = -89;
 0CEACh = 1100.1112.1012.1100 este un număr negativ de doi octeţi, cu valoare
absoluta 52908 şi valoare în complement faţă de 2 care se calculeaza conform
formulei 52908-216 = -12628;
Se observă că un eventual 0 în faţa numărului scris în format hexazecimal nu înseamna
că acesta are semn pozitiv. Contează numai primul bit al octetului cel mai semnificativ.
Aceste transformări se pot face cu utilitarul Calculator din Windows, având opţiunea
View - > Scientific.

Mod de lucru:
P 8.9. Se vor încarca registrele cu constantele: AX=1122, BX=3344, CX=5566,
DX=7788 şi se va efectua următoarea succesiune de operaţii:
AL+66
AL+BL
AL-CL
AL-22
AL+BL+CL+DL

38
P 8.12. Se vor încarca registrele cu constantele: AX=1122, BX=3344, CX=5566,
DX=7788 şi se va efectua următoarea succesiune de operaţii:
AX+6666
AX+BX
AX-CX
AX-22
AX+BX+CX+DX
P 8.11 Se vor încarca două numere de 32 de biţi în registre în felul următor:
- primul număr 11223344 în AX (octeţii superiori) şi BX (octeţii inferiori)
- al doilea număr 55667788 în CX (octeţii superiori) şi DX (octeţii inferiori) În
continuare se va efectua adunarea celor două numere. Rezultatul trebuie să fie 6688AACC
P 8.12 Acelaşi program ca la 8.11, numerele fiind 55667788 şi 99AABBCC. Rezulatul
trebuie să fie EF113354.
P 8.13 Acelaşi program ca la 8.11 dar, numerele fiind 55667788 şi 11223344, se va
efectua scăderea lor. Rezultatul trebuie să fie 44444444.
P 8.14 Acelaşi program ca la 8.13, numerele fiind 22334455 şi 66778899. Rezultatul
trebuie să fie BBBBBBBC.

39
40
Laborator 9. PRELUCRAREA INFORMAŢIEI ÎNTR-O
UNITATE ARITMETICO-LOGICĂ (ALU)

9.1. Descrierea modului de funcţionare a ALU


Unitatea Aritmetico-Logică (ALU) efectuează operaţii cu operanzi (date de intrare).
Principalele funcţii realizate de Unitatea Aritmetico-Logică (ALU) sunt:
– operaţii aritmetice şi logice cu operanzi de intrare codificaţi pe n biţi. Valoarea lui n este
egală de obicei cu numărul de biţi ai magistralei interne de date a procesorului;
– furnizează indicaţii privind transportul, împrumutul sau alte caracteristici privind
rezultatul operaţiilor efectuate, prin intermediul unor valori binare numite indicatori de
condiţii.
În figura 9.1 este prezentată schema bloc a unei ALU [18]

Figura 9.1. Schema bloc a unei ALU.

În figură sunt reprezentate:


– două intrări de câte n biţi care reprezintă cei doi operanzi cu care lucrează ALU:
i) operandul din stânga, Left, codificat Ln – 1 … L0;
ii) operandul din dreapta, Right, codificat Rn – 1 … R0.
– o intrare pentru specificarea operaţiei aritmetico-logice de efectuat între cei doi operanzi,
codificată cu trei biţi, notată în figură cu F2F1F0 (numărul de biţi depinde de setul de funcţii al
ALU);
– ieşirea de n biţi pe care se generează rezultatul Qn – 1 … Q0;
– o serie de biţi cu semnificaţie independentă, numiţi indicatori (flag), ce caracterizează
relaţii între operanzi sau rezultatul operaţiei efectuate; în exemplul din figură au fost
consideraţi următorii indicatori:
CARRY: este un bit care reprezintă deplasarea care apare la operaţiile aritmetice cu
numere întregi pozitive;
EQUAL: indică identitatea celor doi operanzi, Ln – 1 … L0 şi Rn – 1 … R0;
ZERO: semnalizează faptul că rezultatul operaţiei curente, Qn – 1 … Q0, este o configuraţie
binară cu toţi biţii egali cu zero;
SGN: reprezintă valoarea celui mai semnificativ bit, Qn – 1, al rezultatului care, dacă
rezultatul este interpretat ca un număr cu semn, este valoarea semnului (0 pentru plus şi 1
pentru minus);

41
PAR: reprezintă cel mai puţin semnificativ bit al rezultatului care, dacă rezultatul este
interpretat ca număr întreg, reprezintă paritatea numărului (0 pentru număr par şi 1 pentru
număr impar);
OVF: reprezintă depăşirea capacităţii de reprezentare a numerelor întregi (cu numerele
negative reprezentate prin complementul faţă de 2); este un fel de Carry pentru numerele
întregi cu semn.
Setul de funcţii al ALU pentru exemplul din figura 6.2 este limitat la următoarele:
AND: Qi = Li×Ri, pentru i = 0,1, … (n – 1);
OR: Qi= Li + Ri, pentru i = 0,1, … (n – 1);
XOR: Qi= Li  Ri, pentru i = 0,1, … (n – 1);
ADD: adună modulo 2n cei doi operanzi (două numere întregi);
SUB: scade modulo 2n cei doi operanzi (două numere întregi);
INC: incrementează modulo 2n operandul din stânga;
LEFT: ieşirea ia valoarea operandului din stânga;
SHL: reprezintă deplasarea logică cu o poziţie la dreapta a operandului din stânga
(cel mai puţin semnificativ bit se pierde).
ALU uzuale realizează şi alte funcţii, de exemplu decrementarea (DEC), rotirea (ROT),
NOT etc.

9.2. Structura ALU


O unitate aritmetico-logică conţine blocuri formate din circuite logice de tipul celor
porţilor logice, codificatoare, decodificatoare, multiplexoare, demultiplexoare, sumatoare,
multiplicatoare, registre de deplasare pentru realizarea operaţiilor de deplasare înainte şi
înapoi – Carry out sau Carry in, circuite tampon etc. Registrele locale sunt folosite ca
memorie de mare viteză dar şi pentru efectuarea unor operaţii aritmetice şi logice.
În funcţie de performanţele dorite pentru ALU, de restricţiile tehnologice şi de opţiunile
proiectantului, pot fi concepute organizări distincte pentru ALU, cum sunt de exemplu cele
prezentate în figurile 9.2 şi 9.3 [18].
În figura 9.2 este reprezentată structura internă a unei unităţi aritmetico-logice, unde:
– L reprezintă operandul din stânga de n biţi;
– R reprezintă operandul din dreapta de n biţi;
– F2F1F0 este codul operaţiei efectuate de ALU;
– Q este ieşirea de n biţi a ALU pe care se generează rezultatul operaţiei F2F1F0 asupra
celor doi operanzi; ea reprezintă ieşirile celor n MUX3 care selectează ieşirile circuitelor
anterioare ce realizează operaţia dorită, selectată prin codul F2F1F0;
– P sunt cele n semnale propagate, Pi, calculate cu cele n circuite OR;
– G sunt cele n semnale generate, Gi, calculate cu cele n circuite AND;
– C reprezintă cele n semnale de transport, Ci, calcul generate de blocul CTA (circuitul de
Calcul al Transportului Anticipat) pornind de la semnalele P şi G;
XOR sunt ieşirile celor n circuite XOR, ieşiri folosite şi în blocul de test, TEST, pentru
calculul condiţiei de EQUAL cât şi în blocul circuitelor aritmetice, CA, pentru calculul
funcţiilor ADD, SUB şi INC.

42
Figura 9.2. Organizarea internă a unei ALU.

Organizarea internă a blocului CTA depinde de opţiunea pentru viteza


de execuţie a funcţiilor numerice. Blocul TEST este realizat din două circuite OR.
O unitate aritmetico-logică din procesor este realizată din astfel de blocuri funcţionale ca cel
din figura 9.3, aranjate pe orizontală, pe nivele logice.

Figura 9.3. Modul de un bit dintr-o ALU – ALUE.


O altă variantă de unitate aritmetico-logică poate fi realizată din aranjarea pe verticală de
unităţi aritmetico-logice elementare (ALUE) care operează cu cuvinte de un singur bit, ca cea
prezentată în figura 9.3.
Circuitul ALUE poate fi gândit ca o felie (slice) de ALU.
Semnificaţia codurilor de comandă pentru ALUE este dată în tabelul 9.1.

Tabelul 9.1. Tabelul funcţiilor realizate de ALUE


F2F1F0 Mnemonică Semnificaţia
000 AND Funcţia AND bit cu bit
001 OR Funcţia OR bit cu bit
010 SHL Deplasarea operandului L la dreapta, cu o
poziţie

43
011 LEFT Trece operandul L
100 XOR Funcţia XOR bit cu bit
101 ADD Adunarea operanzilor
110 SUB Scăderea operandului R din operandul L
111 INC Incrementarea operandului L

Pentru i = n – 1, intrarea Li + 1 = 0, iar pentru i = 0 intrarea de transport este C0 = F1F0.


Rolul fiecărui circuit din componenţa ALUE este următorul:
– poarta AND realizează funcţia logică Li×Rişi calculează Gi pentru a fi generat către
circuitul de transport anticipat (prin MUX2 codul F1F0 = 00 selectează valoarea lui Ri);
– poarta OR realizează funcţia logică Li + Rişi calculează produse parţiale Pi pentru a fi
generate către circuitul de transport anticipat, aşa cum am prezentat în capitolul 3, paragrafele
3.9 şi 3.10;
– poarta XOR conectată la intrarea 4 a MUX3 realizează funcţia logică Li  Ri şi calculează
suma modulo 2 dintre operanzii implicaţi în operaţiile de tip aritmetic (adunare, scădere şi
incrementare);
– poarta XOR conectată la intrările 5, 6 şi 7 a MUX3 calculează suma modulo 2 cu bitul de
transport recepţionat de la circuitul de generate a transportului anticipat;
– MUX2 selectează ca operand pe Ripentru operaţiile logice binare şi pentru adunare, pe
Ri pentru scădere şi pe 0 pentru increment;
– MUX3 are rolul de a selecta la ieşirea Qi una din funcţiile calculate pe nivelul anterior.
Codificarea funcţiilor prezentată în tabelul 9.1 a fost făcută astfel încât să permită aplicarea
biţilor de selecţie direct la intrarea ambelor multiplexoare. S-a evitat astfel utilizarea unor
circuite random de transcodare pe intrările de selecţie ale MUX2.
Ordinul de mărime al dimensiunii structurii ALU formată din n ALUE, circuitul TEST şi
CTA este determinată de circuitul CTA iar viteza de execuţie a operaţiilor este dată tot de
lungimea căii de transport (CTA).
Indicatorii de condiţii sunt poziţionaţi de unitatea de prelucrare în conformitate cu
evenimentele ce s-au produs la efectuarea operaţiei comandate anterior pentru ALU. Aceşti
indicatori (numiţi şi fanioane, flag) sunt memoraţi de obicei în circuite basculante bistabile,
componente ale Registrelor indicatoare, registre interne CPU. Indicatorii de condiţii pot
reprezenta, de exemplu, semnul rezultatului, rezultat zero, paritatea etc.
Intrările în CPU sunt comenzi interne procesorului, comenzi generate de UC şi trimise
către ALU. Conform acestor comenzi ALU va prelucra datele de la intrare şi va furniza datele
la ieşire (registre interne sau externe).

9.3. Realizarea în Circuit Maker a unei unități ALU pe 4 biți

Circuitul integrat SN54/74LS181 reprezintă o unitate aritmetico-logică pe 4 biți, care poate


efectua toate cele 16 operații logice posibile, utilizând două variabile, precum și o varietate de
operații aritmetice.
 Oferă 16 operații de adunare, scădere, comparare, dublare și în plus alte 12 operații
aritmetice;

44
 Suportă toate cele 16 operații logice cu două variabile: SAU-exclusiv (XOR),
comparare, ȘI (AND), ȘI-negat (NAND), SAU (OR), SAU-negat (NOR), precum și
alte 10 operații logice.

Figura 9.4 – Circuitul integrat ALU 4 biți (SN54/74LS181) și semnifacția pinilor

În figura 9.4 se prezintă circuitul integrat cu semnificația pinilor de conexiune, iar în figura
9.5 avem diagrama logică a cicuitului ALU pe 4 biți.

Figura 9.5 – Diagrama logică a unității ALU pe 4 biți (circuit SN54/74LS181)

9.4. Teme de lucru:


Să se realizeze în programul Circuit Maker un circuit care să simuleze această unitate ALU pe
4 biți, conform reprezentării din figura 9.6.

45
Figura 9.6 – Realizarea unui circuitului echvalent unității ALU pe 4 biți

După realizarea circuitului, se poate verifica funcționarea și corectitudinea operațiilor unității ALU
pe 4 biți conform tabelului de funcții logice de mai jos:
Tabel funcții logice ALU 4 biți (circuit SN54/74LS181)

46
Laborator 10. FUNCŢIONAREA UNITĂŢILOR DE MEMORARE
ÎNTR-UN CALCULATOR. TRANSFERURI DE DATE
ŞI OPERAŢII ARITMETICE CU MEMORIA

10.1. Segmentarea memoriei


În figura 10.1 se prezintă segmentarea memoriei RAM dintr-un sistem de calcul, procedeu care
ajută la adresarea corectă și rapidă a tuturor locațiilor de memorie. Memoria este astfel împărțită
(segmentată) în segmente de 64 KB, adică 65535 locații de memorie de 1 octet (byte), având adrese de
la 0000 (cea mai de jos) și până la valoarea hexazecimală FFFF (adică 65535 în baza zecimală, adresa
cea mai de sus).

Figura 10.1 – Principiul segmentării memorie RAM la arhitectura x86

Adresa logică se calculează după formula:


AL = AS*16 +AE
unde:
AL este adresa logică (coincide cu adresa fizică, transmisă pe magistrala de adrese, dacă nu se
foloseşte paginarea).
AS este adresa de segment, conţinută în unul din următoarele registre:
-CS pentru segmente de coduri de instrucţiuni
-DS pentru segmente de date
-SS pentru segmente de stivă
-ES pentru extrasegmente
Iar adresa bazei segmentului este obtinută prin deplasarea cu 4 biţi spre stanga a adresei de segment
(inmulţire cu 16):
ABS=16*AS
Convenţii :

47
Orice operand pus între paranteze drepte reprezintă o adresa de memorie . De exemplu
[3A21] reprezintă conţinutul locaţiei de memorie cu adresa efectivă 3A21, iar [BX+DI] reprezintă
conţinutul locaţiei de memorie a carei adresa efectivă este dată de suma între registrele BX şi DI.
Este permisă şi scrierea RG[const] cau const[RG] unde RG este un registru general iar const
este un deplasament (număr sau etichetă ) care se adună la conţinutul acestui registru. Acestă forma
este echivalentă cu [RG+const], deci scrierea de termeni alaturaţi are semnificaţie de sumare şi nu de
înmulţire.

10.2. Programul de emulare emu8086

EMU8086 este un emulator pentrumicroprocesoarele 8086 (compatibil Intel şi AMD)


având integrat programul deconversie în cod maşină, asamblorul. Acest emulatorul rulează
programele scrise decătre utilizator exact ca un microprocesor real, în modul pas cu pas
pentru observareaefectului fiecărei instrucţiuni.Acest lucru se este posibil deoarece acest
program prezintă conţinutul regiştrilormicroprocesorului, a memorie, a stivei, valoarea
variabilelor precum şi starea indicatorilor de condiții (fanioanelor). Instrucţiunile programului
pot fi executate pas cu pas în mod normal darexistă posibilitatea de execuţie şi în sens invers.

Figura 10.2 – Programul de emulare EMU8086

În fereastra principală(fig. 10.2) se va edita programul utilizând instrucţiunile


specificeprogramării în cod maşină. După terminarea editării codului sursă a programului se
vada comanda de compilare pentru verificarea corectitudinii programului (fig. 10.3).Dacă
sunt probleme softul va specificaîn fereastra de compilare erorile găsiteşi tipul acestora pentru
depanarea lor. Încaz de succes se va cere salvareaprogramului şi apoi se poate da înexecuţie
aplicaţia de emulare cu ajutorul
butonului din fereastra programuluisau butonul dreapta jos din fereastra decompilare.La
emulare se vor deschideautomat două ferestre: fereastra coduluiprogramului şi fereastra de
emulare acodului, astfel încât să se poată urmăriipas cu pas efectul fiecărei instrucţiuni.

48
Pentru a avea acces la vizualizarea segmentelor de memorie în timpul execuției și
depanării, se vor alege opțiunile corespunzătoare din meniul VIEW.

Figura 10.3 – Ferestrele de execuție/depanare cod assembler în EMU8086

10.3. Teme de studiu


Să se scrie și să se asambleze următorul exemplu de cod utilizând programul
EMU8086.
MOV CL,BX[10h] ; Încarcă în CL conţinutul ;locaţiei de memorie a carei adresa
efectivă este suma ;între conţinutul lui BX şi constanta 10h, iar adresa de ;segment este
conţinută în DS.
Instrucţiunea este echivalentă cu forma MOV CL, 10h[BX].
În mod normal, programatorul va specifică numai adresa efectivă, dar în cazuri
speciale se poate folosi totuşi şi adresa fizică, prin specificarea şi a adresei de segment, cu
sintaxa:
AF=AS:AE
Exemplu:
MOV AH,DS:[20h] ;Transferă în AH conţinutul
;locaţiei 20h din segmentul a cărui
;adresă este conţinută în registrul DS
MOV SS:[BX+10h], CL ;Transferă conţinutul lui CL
;în locaţia a carei adresa efectivă este
;dată de conţinutul lui BX adunat cu 10h,
;din segmentul a cărui adresă este
;conţinută în SS.

49
Modul de lucru:

Se va scrie şi se va testa un program care efectueaza următoarele:


• Încarcă constanta 22h în registrul AL
• Trimite această constantă în memorie la adresa BX[20] şi la adresa DS:30

Indicaţii:
Ambele locaţii sunt plasate în segmentul de date şi se pot vizualiza în zona Dump din
fereastra inferioară a Turbo Debugger.

50
Laborator 11. TRANSFERURI PE 1 OCTET ŞI PE 2 OCTEŢI

11.1. Tipuri de registrele de segment


În funcţie de registrele generale folosite în formarea unei adrese, registrele de segment
sunt registre generale şi registre de segment implicite şi sunt prezentate în tabelul de mai jos.

Registru
Registru de segment implicit
general
SP SS
BP SS
BX DS
SI DS
DI ES
BP+SI sau BP+DI SS
BX+SI sau BX+DI DS
IP CS

Trebuie să se ţină seama în permanenţă de regulile registrelor de segment implicite


deoarece asamblorul nu poate semnala erori în cazul utilizarii lor incorecte.
O locaţie de memorie are prin convenţie un octet, astfel că ea poate fi operand numai
pentru un registru de 8 biţi. În cazul în care se fac transferuri cu registre de 2 octeţi se
utilizează următoarea convenţie ("little-endian"): la adresa specificată se află octetul inferior
al registrului dublu, iar la adresa imediat următoare octetul superior.
Specificarea lungimii operandului (1 octet sau 2 octeţi) este sau implicită sau declarată
cu prefixele BYTE PTR repectiv WORD PTR .

Exemplu:
MOV AL, [BX+3000] transferă numai în AL octetul de la adresa 3000 din
segmentul de date. Nu este nevoie de prefix deoarece operandul AL este de 8 biţi şi rezulta
implicit un transfer de un octet.
MOV AX, [SI+3000] transferă în AL octetul de la adresa 3000 din segmentul de
date şi în AH octetul de la adresa 3001 din segmentul de date (întotdeauna în octetul superior
conţinutul locaţiei de memorie cu adresa mai mare). Nu este nevoie de prefix deoarece
operandul AX este de 16 biţi şi rezultă implicit un transfer de doi octeţi.
ADD word ptr [BX+3000],59 adună la cuvântul (număr de 16 biţi) conţinut în
locaţiile 3001 şi 3000 din segmentul de date, numărul 59. Dacă nu s-ar specifică lungimea
"word ptr", s-ar face adunarea pe un singur octet între conţinutul locaţiei 3000 şi constanta 59.
ADD byte ptr [BP+3000],59 adună la octetul conţinut în locaţia 3000 din
segmentul de stivă, numărul 59, fără vreo influenta asupra locaţiei 3001. Dacă nu s-ar
specifica lungimea, operaţia s-ar efectua tot pe un octet, dar asamblorul ar afişa totuşi o
avertizare legată de lungimea operanzilor.

51
11.2.Modul de lucru :
Se vor scrie şi testa următoarele programe, folosindu-se pe cat posibil numai adrese
efective:
P 1 Program care încarcă în AX constanta 3344 şi o trimite în memorie la adresa 20h.
Se va observă în ce fel apar octeţii acestei constante în memorie.
P 2 Trimite în memorie la adresa 20 constanta 1122 şi la 30 constanta 44
P 3. Program care:
 încarcă constanta 33EE în AX
 o trimite în memorie la adresa 30
 încarcă constanta 22 în AL
 adună această constantă la numărul din locaţiile încarcate anterior cu constanta
33EE.
Indicaţii:
Pentru a avea rezultatul adunării pe 16 biţi, va trebui folosit registrul AX, după ce se
încarcă AH cu 00.
În memorie, la adresa DS:30 vor apare octeţii 10.34, adică numărul 3410, rezultatul
adunării lui 33EE cu 22.

4. Program care trimite în memorie la adresa 10 din segmentul de date suma


constantelor 44 şi 122, fără să se specifice explicit registrul de segment.
Indicaţii:
Rezultatul, la adresa 10 trebuie să apară sub forma 66.01.
5. Acelasi program ca la punctul.3 dar se vor folosi adrese logice, fără a implica alte
registre generale (se presupune ca nu trebuie modificat conţinutul acestora).
Indicaţii:
Va fi necesar să se specifice explicit registrul de segment.

52
Laborator 12. MODURI DE ADRESARE

În funcţie de termenii folosiţi în formula generală a adresei efective, se definesc


următoarele moduri de adresare:

12.1 Adresare imediată la memorie:


Se specifică în adresa efectivă numai deplasamentul, care constituie chiar adresa
efectivă. Conform observaţiei de la paragraful 3.2, este necesar să se specifice şi registrul de
segment, deci se va scrie de fapt o adresa logică.
Exemplu:
MOV AX,DS:[54] ;Încarcă în AL conţinutul locaţiei cu adresa efectivă 54
din segmentul de date, iar în AH conţinutul locaţiei următoare
MOV ES:[3AC2],DL ;Încarcă în locaţia cu adresa efectivă 3AC2 din
extrasegment conţinutul registrului de 8 biţi DL

Adresa efectivă poate fi specificată şi printr-o etichetă (în paranteze drepte şi cu


specificarea unui segment sau a unui registru general) care a fost declarată anterior.
Declararea unei etichete se face cu una din variantele:
eticheta EQU număr
eticheta EQU şir
eticheta = număr
Dacă se foloseşte forma cu EQU, se admite pentru asignare şi un şir de caractere, în
schimb nu se mai poate face altă asignare ulterioară în program. Forma cu = admite
reasignări, dar nu permite asignarea cu şiruri.

Exemplu:
adresa1 equ 20h
adresa2 equ adresa1+2
adresa3=30h
.
.
mov AL,DS:[adresa1] ; Încarcă în AL continutul
;locaţiei de memorie de la adresa 20h
;din cadrul segmentului de date
mov SI[adresa2],ch ;Încarcă CH în adresa 22h
;din cadrul segmentului de date
mov AH,[BP+adresa3] ;Încarcă în AH de la
;adresa 30h din cadrul segmentului de
;stivă

53
12.2 Adresarea directă

În caz că se utilizează numele unei locaţii declarate în cadrul segmentului de date, nu


mai sunt necesare parantezele drepte şi un alt registru. Adresa de segment este conţinută
implicit în DS, dacă nu se specifică altfel.
Aceasta formă este posibilă pentru segmentul de date, care poate fi declarat în partea
iniţială a programului, fără ca programatorul să se preocupe de plasarea sa exactă în memorie.
Se utilizează directive de rezervare a unor locaţii de memorie, DB, DW, etc. care vor fi
prezentate pe larg mai târziu. Adresa va fi calculată automat de asamblor şi înlocuită în
instrucţiune cu valoarea numerică corespunzătoare.

Exemplu:
.model small
.stack 100h
.DATA
locaţie db 33,44,55,66 ;Stabileşte adresa
;"locaţie" la începutul
;segmentului de date
.code
MOV AX,@data ;Încarcă adresa segmentului de date
MOV DS,AX ;în registrul DS
MOV AL,locatie+2 ;Încarcă în AL octetul de la a
;locaţia 02 din DS
MOV locatie+1, byte ptr AL ;Încarcă în locaţia 01
;conţinutul lui AL
.
.
.
Se observă că nu este necesară punerea operandului de adresa în paranteze, prin
eticheta declarată după directiva .DATA înţelegându-se implicit conţinutul unei locaţii de
memorie.
Observaţie: Instrucţiunile care urmează imediat după directiva .code din exemplul de
mai sus ( cele cu caractere bold) sunt necesare întotdeauna atunci când se declară un segment
de date. Asamblorul şi linkeditorul plasează acest segment acolo unde au memorie liberă şi
adresa acestui segment trebuie incărcată explicit în registrul de segment de date, DS. Cum
acest registru nu admite o încărcare directă cu o constantă, această adresă, cunoscută de
asamblor prin simbolul @dată se încarcă întâi într-un registru general şi apoi se transferă în
registrul DS. Se poate folosi şi forma de referire la o variabilă sau constantă din segmentul de
date (forma nerecomandată totuşi în astfel de cazuri):

MOV AX, seg locaţie

54
Programul Turbo Debugger, dacă are implicit afişata o fereastra Dump, după rularea
instrucţiunii MOV DS,AX va afişa automat zona respectivă cu registrul de segment ES.
Pentru a afişa chiar segmentul de date, trebuie dată o noua comanda Dump din submeniul
View, atunci când fereastra CPU este activata (dacă nu este, se da un click pe aceasta
fereastra). În noua fereastra dump se vor observa datele declarate.

12.3 Adresare indirectă la memorie prin registru


Se specifică în instrucţiune registrul din care se va lua adresa efectivă. După cum
rezulta din formula, registrul este unul din următoarele: BX,BP,SI,DI.

Exemplu:
MOV AL, [BX] ;Încarcă în AL conţinutul ;locaţiei de memorie a carei
adresa efectivă este ;conţinută în BX şi adresa de segment conţinută în ;registrul implicit DS.
MOV [BP],CX ;Încarcă conţinutul lui CL în ;locaţia de memorie a carei
adresa efectivă este ;conţinută în BP şi adresa de segment conţinută în ;registrul implicit SS,
iar conţinutul lui CH în locaţia ;de memorie următoare.

Dacă nu se specifică în adresa şi un registru de segment, acesta va fi cel implicit,


specificat de tabelul amintit mai sus.

12.4 Adresare indirectă la memorie prin registru cu deplasare


Adresa efectivă este dată de suma registrului şi deplasamentului specificate de
instrucţiune. Adresa de segment va fi dată de DS, cu excepţia cazului în care se utilizeaza
registrul BP, caz în care adresa de segment este dată de SS.

Exemplu:
MOV AL,[DI+31] ; Transferă în AL conţinutul locaţiei a carei adresa este dată de
conţinutul lui DI la care se adună 31, iar adresa de segment este dată de DS.
MOV [BP+1226],CX; Transferă pe CL în locaţia a carei adresa este dată de
conţinutul lui BP la care se aduna 1226, iar adresa de segment este dată de SS, iar CH în
locaţia următoare.
Aceste instrucţiuni se mai pot scrie şi :
MOV AL,31[DI] respectiv
MOV 1226[BP],CX
Modul de adresare prin registru cu deplasare se recomandă pentru adresarea
elementelor şirurilor şi tabelelor. De exemplu, dacă s-a definit anterior constanta numerică
TAB ( de exemplu TAB EQU 2100) se poate adresa elementul de tabel cu numărul conţinut
în registrul SI printr-o instrucţiune de genul ADD BX, TAB[SI].

12.5 Adresare indirectă la memorie prin 2 registre


Adresa efectivă este dată de suma a două registre specificate de instrucţiune (una din
cele 4 variante posibile conform expresiei generale).
Registrul de segment implicit este DS cu exceptia cazului când este menţionat BP, în
care caz segmentul este cel de stivă, cu adresa conţinută în SS.

55
Modul de adresare prin registru cu deplasare se recomandă pentru adresarea
elementelor şirurilor şi tabelelor. De exemplu, dacă s-a incărcat anterior constanta numerică
TAB într-un registru de baza ( de exemplu MOV BX,2100) se poate adresa elementul de
tabel cu numărul conţinut în registrul SI printr-o instrucţiune de genul MOV CX,[BX+SI].

Exemplu:
MOV CL,[BP+SI] sau MOV CL,[BP][SI]
SBB DX,[BX+DI] sau SBB DX,[BX][DI]

12.6 Adresare indirectă la memorie prin 2 registre cu deplasare.


Adresa efectivă este dată de suma a două registre şi un deplasament, toate elementele
fiind specificate de instrucţiune.
Registrul de segment implicit este DS cu exceptia cazului când este menţionat BP, în care
caz segmentul este cel de stivă, cu adresa conţinută în SS.

Exemplul:
MOV CX,[BX+SI+2C]
SUB DX,[BP+SI+2455]

Modul de adresare prin 2 registre cu deplasare se recomandă pentru adresarea


elementelor matricilor. De exemplu, dacă s-a definit anterior constanta numerică MAT ( de
exemplu 2100) iar BP conţine numărul unei linii înmulţit cu numărul total de coloane se poate
adresa elementul din linia respectivă având indicele (numărul de coloană) conţinut în registrul
SI, printr-o instrucţiune de genul:

ADD BX,MAT[BP][SI] ;echivalentă cu


ADD BX,[BP+SI+2100]

De exemplu, pentru o matrice cu 5 linii şi 6 coloane, care începe la adresa 20h, dacă se
doreşte accesarea elememtului al treilea din linia a patra, vom scrie:

MAT=20h
MOV BX, 18
MOV SI,3
MOV CL, MAT[BX+SI]

12.3Modul de lucru

P1. Se va realiza un program care să execute prin adresări imediate următoarele


operaţii:
 În CH se va citi (transferă) de la adresa 10 din memoria de date
 În DX se va citi de la adresa 11
 Se va scrie la adresa 20 constanta 22
 Se va scrie la adresa 21 constanta 8877

56
 Se va scrie la adresa 30 conţinutul lui CH
 Se va scrie la adresa 31 conţinutul lui DX

P2.Se va realiza un program care are următoarele date iniţiale: constantele de un octet
A=11 şi B=22 şi constantele de doi octeţi C=3344 şi D=5566.Se va calcula in BX expresia
(C+D)-(A+B).

P 3.Se vor încarca registrele în felul următor: AX=2233, CX= 99AA, DL=10 BX=20.
Suma dintre AX şi CX se va trimite în memorie la adresa formată din suma între BX şi DL iar
diferenta lor la adresa imediat următoare.
Indicaţii:
- AX trebuie salvat înainte de sumare;
-DL nu poate fi adunat direct cu BX şi nici nu poate fi folosit la formarea AE.
-În memorie, la adresa DS:0030 va apare şirul: DD.BB.89.88

P 4.Se vor încarca registrele în felul următor: AX=1122, BX= 3344, CX=5566 şi
DX=7788. Sa se facă permutarea ciculară a acestor registre (AX ia valoarea lui BX, BX a lui
CX, CX a lui DX iar DX a lui AX). Se vor folosi pentru stocarea temporară în memorie a
unui registru modul imediat, modul direct şi modul indirect.
P 5.Folosind instruncţiunea de adunare a unui registru cu o constantă, se vor încarcă 4
locaţii succesive de memorie începând de la 10, cu numere crescătoare de un octet, începând
cu 1.
P 6. Acelasi program ca la punctul.5, dar cu numere pe doi octeţi începând cu 1000.
P 7. Acelasi program ca la punctul 5, dar cu numere pe un octet multipli de 5.

57
58
Bibliografie

1. BAICU, Floarea, Complemente de microelectronică, Editura Enciclopedică, Bucureşti 2007


2. BAICU, Floarea, Arhitectura calculatoarelor, Editura Universitară Bucureşti 2014
3. BAICU, Floarea, BAICU Liviu-Gabriel Sisteme de operare, Editura Printech, Bucureşti 2013
4. BAICU, Floarea, Complemente de electronică – Îndrumar de aplicaţii virtuale, Editura Victor,
Bucureşti, 2005
5. BAICU, Floarea, BAICU Liviu-Gabriel, Memoria adresabilă prin conţinut (CAM). Arhitectură
şi avantaje, Analele Universităţii Hyperion din Bucureşti, Electronică şi Calculatoare, Editura Victor,
Bucureşti 2013
6. BAICU, Floarea, Porţi logice virtuale, Analele Universităţii Hyperion din Bucureşti,
Electronică şi Calculatoare, Editura Victor, Bucureşti, 2006
7. BARUCH, Zoltan Francisc, Arhitectura Calculatoarelor Universitatea Tehnică din Cluj-
Napoca
8. GHEORGHIU, Anca, SPÂNULESCU, I., Programarea calculatoarelor electronice, Editura
Victor, Bucureşti, 2003
9. GORGAN, D., SEBESTYEN, G., Structura calculatoarelor, Editura Albastră, 2000
10. GRAY, P. R., MEYER, R., Circuite integrate analogice – Analiză şi proiectare, traducere în
limba română, Editura Tehnică, Bucureşti, 1997
11. POSDĂRESCU, E., Analiza şi sinteza dispozitivelor şi circuitelor numerice, Editura
MatrixRom, Bucureşti, 2009
12. OROS, Horea, Arhitectura Sistemelor de Calcul, Universitatea din Oradea - Facultatea de
Ştiinţe, 2009
13. ROMÂNCĂ, Mihai, SZEKELY, Gyula, Calculatoare Arhitectură şi organizare, 2004, Editura
Universităţii Transilvania, Braşov, 2004
14. Kostas PAGIAMTZIS, Ali SHEIKHOLESLAMI, Content-Adessable Memory Circuits and
Arhitectures: A Tutorial and Survey, IEEE Journal of Solid State Circuits, vol 41, no3, march 2006
15. SPÂNULESCU, I., SPÂNULESCU, S. I., Circuite integrate digitale şi sisteme cu
microprocesoare, Editura Victor, Bucureşti, 2002
16. SPÂNULESCU, S.I., Programarea in limbaj de asamblare a microprocesoarelor, Editura
Victor, Bucureşti, 2004, 237 pag
17. William STALLINGS, Operating Systems (4th edition), Prentice-Hall 2001
18. ŞTEFAN, Gh., Circuite şi sisteme digitale, Editura Tehnică, Bucureşti, 2000
19. TANENBAUM Andrew, Organizarea structurată a calculatoarelor, Editura Agora, 1999
20. Andrew S. TANENBAUM, Modern Operating Systems, 3rd ed., Prentice-Hall, Inc., 2008,
http://www.cs.vu.nl/~ast
21. Von NEUMANN John, First Draft of EDVAC, 30 iunie 1945,
http://www.virtualtravelog.net/wp/wp-content/media/2003-08-TheFirstDraft.pdf
22. VLADIMIRESCU, A., SPICE, traducere în limba română, Editura Tehnică, Bucureşti, 1999
23. ZOTA R., D., Introducere în limbaje de asamblare, http://ase.ro/bti
24. WAKERLY, J., Circuite digitale – Principiile şi practicile folosite în proiectare, traducere în
limba română, Editura Teora, Bucureşti, 2002
25. http://en.wikipedia.org/wiki/Computer_architecture
26. http://history-computer.com/MechanicalCalculators/Pioneers/Pascal.html
27. http://en.wikipedia.org/wiki/Charles_Babbagethomson
28. http://en.wikipedia.org/wiki/William_Thomson,_1st_Baron_Kelvin
29. http://en.wikipedia.org/wiki/Enigma_machine
30. http://www.codesandciphers.org.uk/lorenz/
31. http://en.wikipedia.org/wiki/File:COLOSSUS

59
32. http://en.wikipedia.org/wiki/Konrad_Zuse
33. http://en.wikipedia.org/wiki/ENIAC
34. http://www.archives.upenn.edu/faids/upd/eniactrial/upd8_10.html
35. http://en.wikipedia.org/wiki/John_von_Neumann
36. http://inventors.about.com/od/computersandinternet/a/Eckert-And-Mauchly.htm
37. http://en.wikipedia.org/wiki/Von_Neumann_architecture
38. http://en.wikipedia.org/wiki/Harvard_architecture
39. http://en.wikipedia.org/wiki/Computer_Modern
40. http://en.wikipedia.org/wiki/Quantum_computer
41. http://www.livescience.com/20718-computer-history.html
42. http://en.wikipedia.org/wiki/Shor%27s_algorithm
43. http://en.wikipedia.org/wiki/IEEE_floating_point
44. http://cs.ucv.ro/staff/cpatrascu/SIE/Lucrarea%203.pdf
45. http://ro.wikipedia.org/wiki/UNICODE
46. https://www.Lookup.Tables.com
47. https://www.google.ro/search?q=ebcdic+table&source=lnms&tbm=isch&s.
48. http://steve.hollasch.net/cgindex/coding/ieeefloat.html
49. http://ro.wikipedia.org/wiki/Baz%C4%83_de_numera%C8%9Bie
50. http://ro.wikipedia.org/wiki/Sistem_binar
51. http://www.scribd.com/doc/93164759/Circuit-Maker-2000-User-Manual CircuitMaker-
Integrated Schematic Capture and Circuit Simulation Copyright © 1988-1998 MicroCode
Engineering, Inc.
52. http://en.wikipedia.org/w/index.php?title=Computer_memory&oldid=477489497
53. http://en.wikipedia.org/wiki/File virtual_memory.sv
54. http://en.wikipedia.org/wiki/Content-addressable_memory
55. http://en.wikipedia.org/wiki/hard_drive_en.svg
56. http://en.wikipedia.org/wiki/Seagate_Technology#2010s
57. http://en.wikipedia.org/wiki/Solid_state_drive
58. http://en.wikipedia.org/wiki/Flash_memory
59. http://en.wikipedia.org/wiki/File:2bit_ALU.svg
60. http://en.wikipedia.org/wiki/Central_processing_unit
61. http://en.wikipedia.org/wiki/File:Computer_system_bus.svg
62. http://en.wikipedia.org/wiki/Interrupt
63. http://support.amd.com/en-us/search/tech-docs
64. http://support.amd.com/TechDocs/52259_KB_G-Series_Product_Data_
Sheet.pdf
65.    INTEL, Reliability Report, RR, martie, 2007
66.    INTEL 486 TM-DX Microprocessor, 1990
67. http://en.wikipedia.org/wiki/List_of_Intel_CPU_microarchitectures
68. http://en.wikipedia.org/wiki/File:Intel_Core2_arch.svg
69. http://www.intel.com/content/dam/www/public/us/en/documents/manuals/64-ia-32-
architectures-software-developer-manual-325462.pdf
70. Instruction Set Reference A-M, Order Number 253666;
71. http://developer.amd.com/resources/documentation-articles/developer-guides-manuals/
72. http://amd-dev.wpengine.netdna-cdn.com/wordpress/media/2008/10/
24594_APM_v3.pdf

73.http://biblioteca.regielive.ro/arhitectura-calculatoarelor

60

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