Documente Academic
Documente Profesional
Documente Cultură
ARHITECTURA
CALCULATOARELOR
INDRUMAR de LABORATOR
2
CUPRINS
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 Neumannarchitecture [37].
Î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.
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
Controlere de Intrare/Ieșire
Dispozitive I/O
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
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.
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 .
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).
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
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
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
15
16
Laborator 3 şi 4. PORTI LOGICE FUNDAMENTALE REALIZATE IN
CIRCUIT MAKER. COMBINATII DE PORTI LOGICE
17
21 - Utilitar pentru a crea un macro;
22 - Ajutor (Help);
23 - Utilitar pentru exportarea circuitului.
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 ).
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.
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.
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
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).
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.
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
25
26
Laborator 6. STUDIUL CIRCUITELOR BASCULANTE BISTABILE
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.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.
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
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.
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).
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
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)
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.
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.
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)
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.
42
Figura 9.2. Organizarea internă a unei ALU.
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
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.
Î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.
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
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.
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.
49
Modul de lucru:
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
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
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.
52
Laborator 12. MODURI DE ADRESARE
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ă
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):
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.
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.
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].
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]
Exemplul:
MOV CX,[BX+SI+2C]
SUB DX,[BP+SI+2455]
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
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
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