Documente Academic
Documente Profesional
Documente Cultură
I - Seminarii 63
Sisteme de numeraţie
Def: Prin sistem de numeraţie se înţelege un ansamblu de reguli, care precizează modul de folosire
a unor simboluri, pentru reprezentarea unor numere, oricât de mari sau oricât de mici .
Caracteristicile unui sistem de numeraţie sunt:
• baza sistemului de numeraţie, notată cu b, b≥2; b∈N;
• mulţimea simbolurilor folosite pentru reprezentarea numerelor, conţinând b simboluri, numere
naturale mai mici decât b.
Exemplu:
• sistemul zecimal: b=10, {0,1,2,3,4,5,6,7,8,9};
• sistemul binar: b=2 ,{0,1};
• sistemul octal:b=8,{0,1,2,3,4,5,6,7};
• sistemul hexazecimal:b=16, {0,1,…,9,A,B,C,D,E,F}.
Prin conversie, un număr este reprezentat printr-un şir de digiţi, cu cel mai semnificativ
digit situat in stânga şi cel mai puţin semnificativ digit în dreapta . Poziţia fiecărui digit cuprinde
unul din simbolurile bazei în care este reprezentat numărul respectiv. Valoarea bazei este trecută ,
ca indice in partea dreapta-jos a şirului. Cu cât valoarea bazei, de reprezentare a unui număr, este
mai mică, cu atât şirul va avea un număr mai mare de digţi.
Exemplu: 17510=AF16=2578=101011112.
Orice număr, reprezentat în orice bază, poate fi exprimat în sistemul zecimal sub forma
unui polinom, după următoarea formulă:
n
N=(an an-1 …a1 a0,a-1 a-2…a-m)b= ( ∑a jb j ) , unde:
j =−m
b) Conversia din baza 2 în baza 16 şi invers este o conversie particulară, ce ţine cont de relaţia
24=16. Fie N2 = an, an-1, … , a0 un număr întreg în baza 2.
Folosind teorema conversiei în baza 16, trebuie făcute împărţiri succesive la 16, resturile
fiind digiţi în noua bază.
Pentru conversia din baza 2 în baza 16 se împarte numărul binar de la dreapta la stânga
în grupe de câte 4 biţi, ultima grupă completându-se eventual cu zerouri. Se reprezintă apoi fiecare
grupă cu simbolurile corespunzătoare din baza 16
Exemplu: numărul 10111010101 se scrie:
2 1 0
101
1101
= 5D5H ; (= 5 ⋅16 +13 ⋅16 + 5 ⋅16 = (1493 )10 )
0101
5 D 5
Pentru conversia din baza 16 în baza 2 se face prin înlocuirea fiecărui digit din baza 16
cu reprezentarea lui în baza 2, pe 4 biţi.
0001 1101 1100 0010 1011
Exemplu: numărul 1DC2BH = ( )2;
1 D C 2 B
c) Conversia din baza 2 în baza 8 şi invers se face ca la punctul b), ţinând cont că 8=23.
Exemplu:
0 100 101 011 = (453 ) 8 = 453 Q
- conversia din baza 2 în baza 8: 0100101011=
0 4 5 3
752Q =
111
101
010
- conversia din baza 8 în baza 2:
7 5 2
Obs: • Pentru conversia din baza 8 în baza 10 şi invers nu există o regulă de conversie directă;
• Conversia din baza 8 în baza 16 şi invers se fac prin conversia intermediară în baza 2.
Adunarea a două numere reprezentate într-un sistem de numeraţie oarecare se poate face
adunând cifrele poziţiilor similare ale celor două numere (eventual cu transportul de la adunarea
poziţiilor precedente), pornindu-se de la cel mai puţin semnificativ bit spre cel mai semnificativ.
Fie adunarea a două numere:
N1 = anan-1…a1a0a-1…a-m
N2 = bnbn-1…b1b0b-1…b-m
N1 + N2 = cn+1cncn-1…c1c0c-1…c-m
cn poate fi ori 1 ori 0;
Algoritmul de adunare poate fi implementat în orice sistem de
numeraţie, dacă se pot realiza unităţi de adunare pe o singură cifră, de
forma:
La adunarea a două numere de câte m + n cifre rezultatul poate
avea m + n + 1 cifre, funcţie de transportul de la ultima adunare.
Scăderea a două numere reprezentate într-un sistem de numeraţie oarecare se face scăzând
succesiv cifrele poziţiilor similare ale celor două numere (eventual făcând un împrumut de la poziţia
imediat următoare), pornindu-se de la cel mai puţin semnificativ bit spre cel mai semnificativ.
Dacă apare un împrumut din poziţia j-1, acesta are întotdeauna valoarea 1 poziţia j cu
valoarea bazei în care se face scăderea.
Exemplu: în baza 9:
23 - 18 = ?
23 =13 + 9
3 +9 - 8 = 4
10 - 10 = 0
23 - 18 = 04 = 4
Folosind numere cu semn, scăderea devine un caz particular al adunării şi poate fi
implementată cu aceeaşi unitate de adunare.
Semnalele de tip electric (tensiune, curent, sarcină electrică), optic sau magnetic sunt
suporturile cele mai potrivite în reprezentarea şi procesarea informaţiilor. La aceste semnale
parametrii ce pot exprima cantitativ informaţia sunt: amplitudinea, frecvenţa, faza, etc.
În sistemele digitale aceşti parametri pot lua doar valori discrete, pentru majoritatea
circuitelor, valorile putând fi doar două, grupate în două niveluri logice: 1 şi 0 deci pentru
reprezentarea informaţiilor se foloseşte sistemul de numeraţie binar, simbolurile unui număr
numindu-se biţi. Într-un sistem de calcul, informaţia este reprezentată prin secvenţe binare,
organizate de obicei în cuvinte binare.
Def: Cuvântul este unitatea de informaţie de lungime fixă : n biţi, unde mărimea lui n este
determinată de fabricant, luându-se în calcul raportul performanţe/cost al părţii hardware.
Datorită dezvoltării tehnologice, valoarea minimă a lui n este 8 biţi, caz în care cuvântul
se numeşte octet. Pentru n > 8 biţi, se consideră de obicei valori discrete, multipli de 8 biţi, şi
arareori valori puteri ale lui 2.
Dacă n = 16 , secvenţa binară se numeşte cuvânt;
Dacă n = 32 , secvenţa binară se numeşte dublu-cuvânt;
Dacă n = 64 , secvenţa binară se numeşte cuadruplu-cuvânt;
Notaţie: Orice secvenţă binară de n biţi, n > 8 se numeşte cuvânt; dimensiunea cuvântului se va
exprima separat. Exemplu: fie o memorie de 256 cuvinte, 1 cuv. = n biţi.
A.S.C. I - Seminarii 67
Când cantitatea de informaţie este mare, este utilă exprimarea ei în multipli de cuvinte:
1k = 210 = 1024;
1M = 220 = 1024k;
1G = 230 = 1024M;
1T = 240 = 1024G;
Tipurile de informaţii dintr-un sistem de calcul sunt:
a) Instrucţiuni (informaţii de control); sunt secvenţe binare grupate într-un program, ce sunt
preluate de către unitatea centrală într-o succesiune determinată, şi care indică unităţii centrale ceea
ce urmează să execute.
b) Datele; sunt secvenţe binare asupra cărora se execută prelucrări. Datele pot fi:
b.1. date numerice, reprezentate în două formate diferite: virgula fixă şi virgulă mobilă; ambele
formate pot opera cu numere binare sau cu numere zecimale codificate binar.
Exemplu: N = 98 : reprezentat binar: 01100010B
1001 1000
reprezentat zecimal codificat binar: B
9 8
b.2. date nenumerice, care conţin şiruri de caractere, fiecare caracter fiind o secvenţă binară
codificată.
Pentru reprezentarea numerelor negative, în virgula fixă se pot folosi mai multe coduri de
reprezentare (3), ce reprezintă la fel numerele pozitive, dar care reprezintă în mod diferit numerele
negative. Fie un număr de n biţi, reprezentat în formatul virgulă fixă, şi fie cel mai semnificativ bit,
bitul de semn; biţii rămaşi vor indica magnitudinea numărului.
N =b n −1 b −2 . .. b
n 0
semn magnitudin e
Cu cei n biţi din formatul virgulă fixă, se poate reprezenta orice număr întreg, N, care are
magnitudinea N în intervalul 0≤ N ≤ 2n-1
68 A.S.C. I - Seminarii
1) Codul semn-magnitudine trece de la un număr pozitiv N la valoarea sa negativă, -N,
schimbând semnul (din 0 în 1) şi lăsând mantisa neschimbată.
Fie N > 0 un număr reprezentat pe n biţi: N = 0bn-2bn-3…b1b0.
Valoarea negată : -N = N + 2n-1 = 1 bn-2bn-3…b1b0.
Intervalul de valori ce poate fi reprezentat pe n biţi este: [-2n-1+1;2n-1-1].
Obs: • Din cele 2n combinaţii binare posibile pe n biţi, jumătate sunt numere negative, şi cealaltă
jumătate sunt numere pozitive;
• Valoarea zero (0) are două reprezentări: +0 şi - 0, deci în codul semn-magnitudine, pe n biţi
sunt reprezentate 2n-1 valori distincte.
Exemplu:
N = 3, reprezentat pe 4 biţi: 0011;
N = -3, reprezentat pe 4 biţi: 1011;
Concluzii:
• Toate cele trei coduri au aceeaşi formă pentru N > 0, dar forme diferite pentru N < 0;
• Toate codurile de reprezentare trebuie să îndeplinească condiţia – (– N) = N;
A.S.C. I - Seminarii 69
• Avantajul acestor coduri este faptul că operaţia de scădere poate fi înlocuită prin operaţia de
complementare logică şi adunare. Astfel: N1 – N2 = N1 +(– N2). Astfel operaţiile de bază
implementate în unitatea centrală sunt adunarea şi operaţiile logice.
I. Adunarea a două numere fără semn, pe n biţi generează un rezultat pe maxim (n+1) biţi.
Dacă operanzii sunt numere cu semn, deoarece în reprezentarea lor semnul este bitul cel
mai semnificativ, se poate întâmpla să apară un transport în bitul de semn, alterând rezultatul. De
aceea, la realizarea unităţii aritmetico-logice a unităţii centrale, este necesar să existe un indicator
de depăşire, care să se activeze în cazul alterării bitului de semn.
Adunarea a două numere cu semn se face reprezentând cele două numere în unul din
codurile de reprezentare.
Exemplu: Fie N1 şi N2 două numere cu semn, pe 8 biţi, şi se va calcula N1 + N2 :
N1 = 87 = 57H = 0101 0111B
N2 = - 27; N 2 = 1BH = 00011011B
N1+N2 = 60
a) în codul semn-magnitudine:
N1 + N 2 = 01010111 B + 10011011 B = 11110010 B = 87 ≠ 60 , rezultatul fiind număr negativ;
b) în codul complement faţă de 1:
N1 + N 2 = 01010111 B + 11100100 B = 1 ← 00111011 B = 3BH = 59 ≠ 60 ,neglijând carry, rezultatul
este diferit de cel adevărat, şi trebuie corectat prin adunarea unei unităţi;
c) în codul complement faţă de 2:
N1 + N 2 = 01010111 B + 011100101 B = 1 ← 00111100 B = 3CH = 60 , neglijând carry, rezultatul
este cel adevărat, fără operaţii de corecţie, dacă nu există depăşiri.
Concluzii:
• La adunarea a două numere cu semn, codul de reprezentare pentru care se obţine direct
rezultatul este codul complement faţă de 2;
• Datorită concluziei de mai sus şi a faptului că în codul complement faţă de 2, zero are o singură
reprezentare, la implementarea UAL se foloseşte aproape exclusiv codul complement faţă de 2.
Proprietăţile adunării a două numere cu semn reprezentate în codul complement faţă de 2:
1. Adunarea a două numere de semne opuse nu va genera niciodată o depăşire a capacităţii de
reprezentare a numerelor pe n biţi (alterarea semnului);
Exemplu: Pentru n = 8, cazul cel mai defavorabil este adunarea celui mai mare număr pozitiv N 1 =
127 = 0111 1111B cu cel mai mare număr negativ N2 = -1 = 1111 1111B :
N1 + N2 = 126 = 1 ← 0111 1110B = 7EH.
Neglijând transportul se obţine rezultatul corect.
2. Adunarea a două numere de acelaşi semn poate genera o depăşire a capacităţii de reprezentare pe
n biţi, deci programul trebuie să verifice, la sfârşitul operaţiei dacă a apărut depăşirea;
Exemplu: Pentru n = 8, N ∈ [-128;127];
N1 = 127 = 0111 1111B
N2 = 1 ⇒ N1 + N2 = 1000 0000B = -128
Rezultatul este eronat, fiind un număr negativ.
3. Scăderea a două numere cu semn este o adunare particulară, de forma: 1-N = N 1 + (- N2) şi se
reduce la operaţiile de mai sus.
II. Înmulţirea a două numere reprezentate în virgulă fixă se realizează separat, dacă cele
două numere sunt fără semn, sau dacă ele se consideră cu semn.
70 A.S.C. I - Seminarii
a) Înmulţirea a două numere fără semn:
Fie două numere întregi fără semn, reprezentate pe n biţi:
N1 = an-1…a1a0 , N2 = bn-1…b1b0 , ai, bi ∈ {0,1}, ∀i =0, n −1
N1 ≤ 2n − 1
⇒ N1 ⋅ N 2 ≤ (2n − 1) ⋅ (2n − 1) = 22n − 2n + 1 + 1 < 22n
N 2 ≤ 2n − 1
Deci înmulţirea a două numere fără semn, reprezentate pe n biţi poate genera un rezultat pe
maxim 2n biţi.
Algoritmi pentru efectuarea înmulţirii a două numere fără semn:
a1) Adunarea cu el însuşi
Este cel mai simplu dar şi cel mai dezavantajos. Fie două numere întregi fără semn N1 şi N2 .
- dacă N1 = 0 sau N2 = 0 ⇒ N1 • N2 = 0;
- dacă N1 = 1 sau N2 = 1 ⇒ N1 • N2 =N2 sau N1 ;
N1 ⋅ N 2 = N1 + N1 + N1 + … + N1
- dacă N1 ≥ 2 şi N2 ≥2 ⇒
de (N 2 -1) ori
În acest caz, înmulţirea se realizează repetitiv fiind înlocuită cu N2 – 1 operaţii de adunare.
Dezavantaj: Pe n biţi, N2 poate avea valoarea maximă 2n-1, deci operaţia de înmulţire conţine un
număr variabil de adunări, putând avea până la 2n-2 operaţii de adunare, ceea ce conduce la un timp
de calcul foarte mare. De exemplu pentru n = 8, se pot face până la 254 operaţii de adunare.
Obs: Se mai poate micşora timpul de calcul, considerând N2 cel mai mic număr dintre cele două
numere fără semn.
a2) Algoritmul utilizat în baza 10:
Exemplu de înmulţire în baza 10: Fie N1 = 192 şi N2 = 201
N1 • N2 =192•(2•102+0•101+1•100) = 19200•2+192
Fie două numere binare fără semn reprezentate pe n biţi, N1 şi N2. Se va calcula N1 • N2.
N1 = an-1…a1a0 , N2 = bn-1…b1b0
N1 • N2 =N1 •(bn-1•2n-1+bn-2•2n-2+…+b1•21+b0•20)
Dacă bi = 0, numărul N1•bi•2j dispare din sumă
Dacă bj = 1, numărul N1•bj•2j = N1•2j .
Dar N1•2j este numărul N1 deplasat la stânga cu j poziţii.
Exemplu: N1 = 11 = BH = 1011B; N2 = 5 = 0101B;
N1 • N2 = 55 = 0110111B = 37H.
Concluzie:
Algoritmul a2) este mult mai rapid, fiind implementat în microprocesoare.
A.S.C. I - Seminarii 71
b) Înmulţirea a două numere cu semn se face în doi paşi, tratând semnul separat, şi
înmulţind modulele celor două numere, ca două numere fără semn. Tratarea semnului stabileşte
valoarea bitului de semn, pornind de la biţii de semn ai celor două numere, ştiind că + ⋅ + = +,
−⋅ + = −, − ⋅ − = + . Dar semnul + corespunde bitului de semn 0, iar – corespunde bitului de semn
1.
Regula de stabilire a semnului este :
- dacă numerele au acelaşi semn, bitul de semn al rezultatului este 0;
- dacă numerele au semne diferite, bitul de semn al rezultatului este 1.
Înmulţirea modulelor celor două numere se face după un algoritm de la punctul a).
Deoarece modulele sunt pe (n-1) biţi, rezultatul va fi reprezentat pe maxim (2n-2) biţi.
Concluzie:
Înmulţirea a două numere cu semn, reprezentate pe n biţi, poate genera un rezultat pe maxim
(2n-1) biţi, din care 1 este bitul de semn, şi maxim (2n-2) biţi reprezintă magnitudinea.
III. Împărţirea a două numere reprezentate în virgulă fixă se poate reduce, similar înmulţirii,
la o serie de operaţii simple de adunare, deplasare şi comparare. La împărţire apar însă dificultăţi
suplimentare, deoarece nu există un algoritm de calcul direct, ca cel al înmulţirii.
Ca şi la înmulţire, împărţirea se realizează separat dacă cele două numere sunt fără semn sau
cu semn.
a) Împărţirea a două numere fără semn presupune calculul a două valori: câtul (C) şi restul (R).
Fie două numere fără semn, N1 , N2 ; se va calcula N1 : N 2 ; N1 = N2 • C + R, astfel încât
trebuie găsit un algoritm pentru determinarea lui C şi R. 0 ≤ R ≤ N2.
- dacă N1 < N2 ⇒ C = 0, R = N1;
- dacă N1 = N2 ⇒ C = 1, R = 0;
- dacă N1 > N2 , se aplică următorul algoritm:
1) se aliniază biţii cei mai semnificativi nenuli ai lui N1 şi N2 , prin deplasarea lui N2 la stânga cu
k poziţii (echivalent cu înmulţirea cu 2k); câtul va avea (k+1) biţi ⇒ C = bkbk-1…b1b0;
2) se compară N1 cu N2 • 2k :
- dacă N1 ≥ N2 • 2k, bitul curent al câtului, bk ia valoarea 1 şi (N1 – N2 • 2k) reprezintă primul rest
parţial, notat N1' ;
- dacă N1 < N2 • 2k, bitul bk ia valoarea 0 şi nu se efectuează împărţirea, restul parţial fiind tot N1.
3) se deplasează N2 • 2k la dreapta cu o poziţie ⇔ N2 • 2k-1 ;
4) se repetă paşii 2) şi 3) până se obţin toţi biţii câtului (până când din N2 • 2k se obţine din nou
N2).
Obs: • Împărţirea poate fi efectuată prin operaţii de deplasare, scădere şi comparare;
• Numărul de paşi de calcul este variabil = (k-1);
• Cu cât N2 este mai mic, cu atât câtul C va fi mai mare;
• De regulă, N1 este reprezentat pe 2n biţi, N2 pe n biţi, iar câtul pe n biţi.
• Împărţirea la zero nu apare când împărţitorul este 0 ci când câtul devine prea mare. De aceea
UAL a unităţii centrale are un indicator pentru sesizarea împărţirii la 0.
• Împărţirea se efectuează prin căutarea biţilor câtului, spre deosebire de înmulţire, care se
efectuează direct.
Exemplu:
N1 = 190 = BEH = 1011 1110B
N2 = 13 = 0DH = 0000 1101B
N1 : N2 = 14, rest 8 ⇒ C = 14; R = 8.
Aplicând regula de împărţire binară, alinierea lui N1 şi N2 la biţii cei mai semnificativi nenuli se
face prin N2 • 24 ⇒ câtul are 5 biţi:
72 A.S.C. I - Seminarii
C = b4b3b2b1b0
N1 = 1011 1110B
N2•24 = 1101 0000B > N1 b4=0
N1 = 1011 1110B -
N2•23 = 0110 1000B < N1 b3=1
N1' = 0101 0110B
N1' = 0101 0110B -
N2•22 = 0011 0100B < N1' b2=1
N1'' = 0010 0010B
N1'' = 0010 0010B -
N2•21 = 0001 1010B < N1'' b1=1
N1''' = 0000 1000B
N1''' = 0000 1000B
N2•20 = 0000 1101B > N1 b0=0
R = N1'''=1000B=8
C = 1110B=14
a) Împărţirea a două numere cu semn se face în doi paşi, similar ca la înmulţire, tratându-se semnul
separat pentru cât, restul având totdeauna semnul deîmpărţitului. Apoi se împart modulele celor
două numere tratate ca numere fără semn.
Subsistemul de memorie
A.S.C. I - Seminarii 73
1. O memorie primară de 512 ko conţine două module de dimensiuni egale, notate I şi II.
Fiecare modul conţine două bancuri de memorie, de dimensiuni egale, notate 1 şi 2. Determinaţi
harta memoriei primare, completând-o cu adresele de început şi de sfârşit ale zonelor de memorie,
a) ştiind că selecţia modulelor se face cu linia de adresă A18 şi selecţia bank-urilor în modul se
face cu linia de adresă A16, conform tabelei de selecţie de mai jos,
A18 Modul A16 Bank
0 I 0 1
1 II 1 2
b) dacă selecţia bank-ului se face cu A17, iar selecţia modulului se face cu A18;
c) dacă selecţia bank-ului se face cu A17, iar selecţia modulului se face cu A16;
d) Ce locaţie adresează 247.000 (harta a)) ?
dim MP = 512 ko = 219 o ⇒ 19 linii de adresă pentru adresarea memoriei primare: A18, …, A0.
dim MP 219
dim I = dim II = = = 218 o ⇒ 18 linii pentru adresarea în interiorul modulului
nr. module 2
dim modul 218
dim I1 = dim I2 = dim II1 = dim II2 = = = 217 o ⇒ 17 linii pentru
nr . bank - uri/modul 2
adresarea în interiorul bank-ului, din cele 18 ale modulului.
Concluzie:
19 linii de adresă pentru MP:
- 17 linii adresează bank-urile;
- 1 linie selectează modulele (A18);
- 1 linie selectează bancurile în interiorul modulelor (A16);
Zona selectată
modul, bank
A18 A17 A16 A15 … A0 a) b) c)
00000H 0 0 0 0 … 0
… … … … … … I1 I1
0FFFFH 0 0 0 1 … 1
10000H 0 0 1 0 … 0 I1
… … … … … … I2 I2
1FFFFH 0 0 1 1 … 1
20000H 0 1 0 0 … 0
… … … … … … I1 II1
2FFFFH 0 1 0 1 … 1
30000H 0 1 1 0 … 0 I2
… … … … … … I2 II2
3FFFFH 0 1 1 1 … 1
40000H 1 0 0 0 … 0
… … … … … … II1 I1
4FFFFH 1 0 0 1 … 1
50000H 1 0 1 0 … 0 II1
… … … … … … II2 I2
5FFFFH 1 0 1 1 … 1
60000H 1 1 0 0 … 0
… … … … … … II1 II1
6FFFFH 1 1 0 1 … 1
70000H 1 1 1 0 … 0 II2
… … … … … … II2 II2
7FFFFH 1 1 1 1 … 1
a) b) c)
74 A.S.C. I - Seminarii
80000H 80000H 80000H
II 7FFFFH II 7FFFFH II 7FFFFH
2 70000H 2 60000H 2 70000H
II 6FFFFH II 5FFFFH II 6FFFFH
1 60000H 1 40000H 1 60000H
II 5FFFFH 3FFFFH 5FFFFH
I1 20000H
I2 50000H
2 50000H
4FFFFH 1FFFFH 4FFFFH
II I2 I1
00000H 40000H
1 40000H
3FFFFH
II
3FFFFH
I2 30000H 2 30000H
2FFFFH II 2FFFFH
I1 20000H 1 20000H
1FFFFH 1FFFFH
I2 10000H
I2 10000H
0FFFFH 0FFFFH
I1 00000H
I1 00000H
I1 = 64 ko;
I = 128 ko.
Obs: • Zonelor continue de locaţii de memorie din harta de memorie, le corespund adrese succesive
din spaţiul de adrese fizice, deci dimensiunea zonelor continue va fi indicată de cele mai puţin
semnificative linii de adresă din magistrala de adrese;
• Dimensiunea zonelor continue din harta de memorie este dată de cele mai puţin
semnificative linii de adresă, toate de după ultima linie de adresă de selecţie ( în cazul a),
ultima linie de adresă de selecţie este A16);
• Modificarea liniei de adresă de selecţie, cea mai puţin semnificativă, determină modificarea
dimensiunii zonelor conţinute în harta de memorie şi implicit, numărul zonelor din hartă,
astfel: la deplasarea selecţiei la stânga, spre adrese mai mari, dimensiunea zonelor creşte, iar
numărul lor scade;
• Modificarea celorlalte linii de selecţie (fără cea mai puţin semnificativă), determină
modificarea ordinii de aranjare a zonelor în harta de memorie, dimensiunea şi numărul lor
rămânând nemodificate.
0 0 1 1 1100 0100 1101 1000
B ⇒ modulul I, bank-ul 2
c) 247.000 = 3C4D8H = A A
18 16 C4D8H =locatia
C4D8H = offset-ul
Răspuns: în modulul I, bank-ul 2, offset-ul C4D8H
Dacă dimensiunea zonelor în hartă este dată de 19 linii de adresă (cele mai puţin
semnificative), cea mai puţin semnificativă linie de adresă de selecţie va fi a 20-a linie de adresă,
adică A19 ⇒ tabelul de adevăr:
A20 A19 A18 … A0 Selecţie bank
000000H 0 0 0 … 0
… … … … … 1
07FFFFH 0 0 1 … 1
080000H 0 1 0 … 0
… … … … … 4
0FFFFFH 0 1 1 … 1
100000H 1 0 0 … 0
… … … … … 3
17FFFFH 1 0 1 … 1
180000H 1 1 0 … 0
… … … … … 2
1FFFFFH 1 1 1 … 1
b) Tabelul de selecţie:
A20 A19 bank
0 0 1
0 1 4
1 0 3
1 1 2
3.a) Să se realizeze un modul de memorie ROM de capacitate 64 ko, folosind circuite EPROM
de 16 ko.
76 A.S.C. I - Seminarii
b) Ştiind că, în harta de memorie a modulului, fiecărui circuit EPROM îi sunt alocate zone
continue de adrese de memorie, să se deseneze harta de memorie a modulului. Explicaţi cum sunt
utilizate liniile de adresă.
c) Ce locaţie de memorie va fi adresată, prin funcţia de adresare, de adresa 16384 ?
a)
dim. modul = 64k cuvinte = 26•210 cuvinte ⇒ 16 linii de adresă pentru adresarea modulului
1 cuvânt = 8 biţi = 1o
dim circuit = 16k cuvinte = 214 cuvinte ⇒ 14 linii de adresă pentru adresarea circuitului
1 cuvânt = 8 biţi = 1o
b) Ştiind că fiecărui circuit EPROM îi sunt alocate zone continue de adrese de memorie, rezultă că
cele două linii de adresă folosite pentru selecţia CI de memorie, sunt cele mai semnificative: A15,
A14 . 16 linii de adresă pentru adresarea modulului ⇒ 4 cifre hexa pentru codificarea adresei.
Tabelul de adevăr:
A15 A14 A13 … A0 Zona
0000H 0 0 0 … 0
… … … … … 1
3FFFH 0 0 1 … 1
4000H 0 1 0 … 0 4 FFFFH
CFFFH
… … … … … 2 BFFFH
7FFFH 0 1 1 … 1 3
8000H 1 0 0 … 0 8000H
2 7FFFH
… … … … … 3 4000H
BFFFH 1 0 1 … 1
3FFFH
CFFFH 1 1 0 … 0 Tabelul de adevăr pentru 1 0000H
… … … … … 4 circuitul de selecţie:
FFFFH 1 1 1 … 1 Harta de memorie:
a)
d M = i8 cm k u v
1c = 1 u 6 v d b M > id mC i mI
⇒ ⇒ se foloseşte conectarea ieşirilor în paralel
d C = i4c mI u 1c Mv = u1 C vc uI v
1c = 1 u 6 v b
dim M
Numărul de CI necesare = =2
dim CI
dim M = 8k = 213 ⇒ 13 linii de adresă pentru adresarea modulului
dim CI = 4k = 212 ⇒ 12 linii de adresă pentru adresarea modulului
⇒ 1 linie se foloseşte pentru selecţia unuia din cele două circuite integrate de memorie;
b)
Tabelul de adevăr:
A12 A11 A10 A0 Zona
0000H 0 0 0 … 0
… … … … … 1
07FFH 0 0 1 … 1
0800H 0 1 0 … 0
… … … … … 2
0FFFH 0 1 1 … 1
1000H 1 0 0 … 0
… … … … … 1 Tabelul de adevăr pentru circuitul de selecţie:
17FFH 1 0 1 … 1
1800H 1 1 0 … 0 A11 Circuit
… … … … … 2 0 1
1FFFH 1 1 1 … 1 1 2
Se obţine din biţii de pe acelaşi rând (110…0 = 1 1000 0000 0000 = 0001 1000
1FFFH 0000 000 = 1800H)
2 1800H Harta de memorie a modulului:
17FFH
1 1000H
0FFFH
2 0800H
07FFH
1 0000H
78 A.S.C. I - Seminarii
Harta de memorie poate fi modificată prin schimbarea liniei de adresă cu care se face
selecţia. Astfel dacă se foloseşte o linie mai puţin semnificativă, numărul zonelor de memorie va fi
mai mare, iar dacă se foloseşte o linie mai semnificativă, numărul zonelor de memorie va fi mai mic
( iar dimensiunea unei zone va fi mai mare).
c)
1 0 000 0000 0000
4096 = 1000H = A11
⇒ adresa selectează locaţia de memorie din zona 1, offset-ul 800H (1000 0000 0000).
5.a) Să se realizeze un modul de memorie DRAM de capacitate 64 ko, folosindu-se circuite DRAM
de 64 kb (4164).
b) Dacă modulul de memorie se găseşte situat într-o memorie primară de 128 ko, la adresele cele
mai semnificative, determinaţi ce linie de adresă va selecta modulul şi arătaţi cum va acţiona
aceasta pentru selecţie.
a) dim M = dim CI = 64 k cuv ⇒ 26•210 = 216 ⇒ 16 biţi de adresă pentru adresarea modulului şi a
unui circuit.
d M = i6 cm 4 u k v
1c = 8 u b v d M = id Cm i m I
⇒ ⇒ se foloseşte conectarea în paralel la intrare
b) dim MP = 128 k cuv.= 27•210 = 217 ⇒ 17 biţi de adresă pentru adresarea memoriei primare.
A.S.C. I - Seminarii 79
Deoarece modulul de memorie (de 64 k cuv) se găseşte situat la adresele cele mai semnificative
din MP (de 128 k cuv) rezultă că selecţia modulului se face cu bitul de adresă cel mai semnificativ,
din cei 17 biţi de adresă ai MP ⇒ A16 va selecta modulul.
A16
0 Modulul este inactiv
1 Modulul este activ (selectat)
6.a) Să se realizeze un modul de memorie ROM de capacitate 16 kcuv, 1cuv.= 32b, folosindu-se
circuite EPROM de 16 ko.
b) Să se deseneze harta modulului de memorie.
c) Să se implementeze circuitul de selecţie, ştiind că transferul de date se poate face în orice
combinaţie de octeţi, din cei 4 octeţi ai magistralei de date.
a) dim M = dim CI = 16 k cuv ⇒ 24•210 = 214 ⇒ 14 linii de adresă pentru adresarea modulului şi a
unui circuit.
80 A.S.C. I - Seminarii
d M = i16 cm k u v
1c = 3 u 2 v d b M = id Cm i mI
⇒ ⇒ se foloseşte conectarea în paralel la intrare
d i mb a n= 3k 2 c ku v
1 c u= 1v o
d i m o =d 2u⋅ d l i mb a n= 6k 4 c ku = v21 6c u v
1 c u= 1v o
⇒ 16 biţi pentru adresarea modulului: A15…A0
deci codificarea adresei se face pe 4 cifre hexa
a)
Tabelul de adevăr:
b)
Tabelul de adevăr:
A15 A14 A13 … A0 bank Harta de memorie:
0000H 0 0 0 … 0
II FFFFH
… … … … … I
3FFFH C000H
0 0 1 … 1
4000H
I 0
BFFFH 1 0 0
… … … … … II
7FFFH 8000H
0 1 1 1
II
8000H 7FFFH
1 0 0 0
…
4000H … … … … I
BFFFH
I 1
3FFFH 0 1 1
C000H 1 1 0 0
0000H
… … … … … II
FFFFH 1 1 1 1
82 A.S.C. I - Seminarii
8.a) Să se realizeze un modul de memorie ROM de 32 ko, folosindu-se circuite EPROM de 16 ko,
ştiind că modulul ROM este situat într-o hartă de memorie primară de 1 Mo, în
zona adreselor cele mai mari, iar harta de memorie a modulului ROM este
următoarea:
b) Să se implementeze circuitul de selecţie.
c) La ce adresă se va găsi prima locaţie de memorie din bank-ul II ?
1 1 0
c) Prima locaţie de memorie din bank-ul II: offset-ul = 0; A18 = 1 ⇒ 0100 0000 0000 0000 0000
⇒ adresa = 40000H
10. O memorie primară modularizată are o capacitate de 512 ko şi conţine două module de
memorie, unul ROM şi unul SRAM de dimensiuni egale. Modulul de memorie ROM este realizat
A.S.C. I - Seminarii 85
cu circuite EPROM de 128 ko, iar modulul SRAM este realizat cu circuite SRAM de 128 ko.
Să se deseneze harta de memorie a MP, ştiind că :
- modulul SRAM se găseşte la adrese mici;
- selecţia modulelor se face cu bitul de adresă A18;
- selecţia zonelor în interiorul modulului se face cu bitul de adresă A17.
dim MP = 512k cuv.= 219 ⇒ 19 linii de adresă pentru adresarea modulului, din care:
dim modul = 256k cuv.= 218 ⇒ 18 linii pentru adresarea în interiorul unui modul,
şi 1 linie pentru selecţia unuia din cele două module ale MP;
dim circuit = 128k cuv.= 217 ⇒ 17 linii de adresă pentru adresarea în interiorul unui CI de mem.,
şi 1 linie pentru selectarea unui CI de memorie în interiorul modulului.
modul zona
A18 A17 A16 … A0 Modul, zona
00000H 0 0 0 … 0
I1 Harta de memorie:
… … … … …
1FFFFH 0 0 1 … 1 SRAM
RAM II2 60000H
20000H 0 1 0 … 0
256k 128ko I2
… … … … …
3FFFFH II1
0 40000H
1 1 … 1 SRAM
40000H 128ko
1 0 0 … 0
II1
SRAM I2
… 20000H
… … … …
5FFFFH 1 0 1 … 1 ROM
256k 128ko
60000H 1
I1 1 0
00000H … 0
II2
… … … … …
7FFFFH
128ko
1 1 1 … 1 ROM
d i Mm = P1 2 c8 uk= v21 7
1 c uMv = P8 b se foloseşte conectarea mixtă:
⇒
d i Cm I =M6 4c ku = v21 6
1 c uCv I =M1 b
dim cuv MP
Nr. circ./bank = =8
dim cuv CIM
dim MP
Nr. bank-uri/modul = =2
dim bank
• MP, de 128 ko este realizată din 2 bank-uri de memorie, a câte 64 ko; fiecare bank este realizat din
8 circuite de memorie de 64 kb.
- 17 biţi pentru adresarea modulului;
- 16 biţi pentru adresarea CIM;
- 1 bit pentru selecţia bank-ului.
• MP se adresează pe 17 biţi, codificaţi pe 5 cifre hexa.
Tabelul de adevăr:
Bank, selectat de Harta MP în cazul selecţiei cu A16:
A1610000H
A15 A14 A13 … A0 A16 A14
00000HII 0 0 0 0 … 0
64 … … … … … … I
03FFFH 0 0 0 1 … 1
ko
04000H 0 0 1 0 … 0
00000H
… … … … … … II
07FFFHI 0 0 1 1 … 1
64
08000H 0 1 0 0 … 0
I
ko … … … … … … I
0BFFFH 0 1 0 1 … 1
0C000H 0 1 1 0 … 0 Harta MP în cazul selecţiei cu A14:
II … 1C000H
… … … … … II
0FFFFH
16ko 0 1 1 1 … 1
10000HI 1 18000H
0 0 0 … 0
16ko … … … … … … I
13FFFHII 1 14000H
0 0 1 … 1
14000H
16ko 1 0 1 0 … 0
I … 10000H
… … … … … II
17FFFH
16ko 1 0 1 1 … 1
18000HII 1 0C000H
1 0 0 … 0
II
16ko … … … … … … I
1BFFFHI 1 08000H
1 0 1 … 1
1C000H
16ko 1 1 1 0 … 1
II … 04000H
… … … … … II
1FFFFH
16ko 1 1 1 1 … 1
I
16ko 00000H
Dacă selecţia bank-ului se face cu A14, harta memoriei primare va fi împărţită în 8 zone de
câte 16 ko.
A.S.C. I - Seminarii 87
12. O MP modularizată are două module de câte 128 ko, fiecare modul având două zone de
dimensiuni egale. Să se deseneze harta de memorie, ştiind că:
- selecţia modulelor se face cu bitul de adresă A16;
- selecţia zonelor într-un modul se realizează cu bitul de adresă A17.
Modulele se vor nota în harta de memorie cu I şi II, iar zonele dintr-un modul se vor nota cu 1 şi 2.
Concluzie: MP are 256 ko, este împărţită în două module de câte 128 ko, fiecare modul are
2 zone de dimensiuni egale ⇒
⇒ Harta memoriei:
II2
30000H
I2
20000H
II1
10000H
I1
64 ko 00000H
88 A.S.C. I - Seminarii
13. Un modul de memorie DRAM are o capacitate de 4 Mo şi este realizat cu circuite DRAM de
1 Mo.
a) Să se deseneze harta de memorie a modulului, ştiind că selecţia
circuitelor DRAM se face cu biţii de adresă A21 şi A19 din spaţiul de adrese al
modulului.
b) Ce locaţie de memorie va fi adresată, prin funcţia de adresare, de adresa
1.572.864 ?
c) Care sunt biţii de adresă folosiţi la selecţia circuitelor DRAM, dacă harta
de memorie a modulului este cea din figură:
a)
dim modul = 4Mcuv.= 222 cuvinte ⇒ 22 biţi pentru adresarea modulului
dim CI = 1Mcuv
1cuv. modul = 1 cuv. CI = 8 biţi
⇒ se foloseşte conectarea în paralel la ieşire.
Numărul de CI folosite = 4
22 biţi se codifică pe 6 cifre hexa;
Tabelul de adevăr:
b) 1.572.864 = 180000H = 01 1000 0000 0000 0000 0000 ⇒ se adresează prima locaţie de
memorie din zona a doua a circuitului II
c) Din tabelul de adevăr al modulului se observă că selecţia circuitului se face cu biţii de adresă A 20
şi A19
A.S.C. I - Seminarii 89
a) adresa maximă este 7FFFH = 111 1111 1111 1111, deci pentru adresarea modulului se folosesc
15 biţi de adresă ⇒ dim modul = 215cuvinte = 32kcuv.
b) cele 4 zone de memorie sunt selectate de două linii de selecţie; modulul este împărţit în 8 zone de
memorie, determinate de 3 linii de adresă:
Ax Ay Az Zona
0 0 0 1 Ax = A14
0 0 1 2 Ay = A13
0 1 0 3 Az = A12
0 1 1 4
1 0 0 1
1 0 1 2
1 1 0 3
1 1 1 4
c) Ultima locaţie din zona 3:
A14 = 1; A13 = 1; A12 = 0; A11 = … = A0 = 1
⇒ 110 1111 1111 1111 = 6FFFH
d) Pentru ca zonelor de memorie să le corespundă spaţii de adrese continue, ele trebuie să fie
selectate de cel mai semnificative linii de adresă A14, A13
15. Cunoscând datele de catalog ale unui modul de memorie SIMM de 2Meg x 32 (8 Mo) şi a
circuitelor de memorie DRAM componente, de 1Meg x 16, să se determine modul de realizare a
modulului.
d iCm = I1 M c u v .
1 c = u1 bv6 i t i
Modulul este format din două bank-uri de memorie a câte 1Meg x 32, fiecare bank fiind format
din două circuite DRAM de câte 1Meg x 16.
90 A.S.C. I - Seminarii
16.a) O memorie primară are 4 module DRAM de câte 1Mo, notate I, II, III şi IV. Ştiind că bitul
de adresă de selecţie cel mai puţin semnificativ este A19, determinaţi care este, în harta de memorie,
dimensiunea maximă a zonelor de memorie dintr-un modul care conţine adrese succesive.
b) Câte astfel de zone vor fi ?
c) Care va fi adresa de selecţie cea mai puţin semnificativă, dacă zonele continue au 256 ko?
dim MP = 4M cuv = 222 cuv ⇒ 22 biţi de adresă pentru adresarea MP, din care doi biţi vor
selecta unul din cele 4 module de memorie
Modul, selectat
A21 A20 A19 de A19 şi
A21 A20
0 0 0 1 1
0 0 1 2 2
0 1 0 1 3
0 1 1 2 4
1 0 0 3 1
1 0 1 4 2
1 1 0 3 3
1 1 1 4 4
Pentru că bitul de adresă de selecţie cel mai puţin semnificativ este A19, memoria primară va fi
împărţită în 8 zone de memorie de dimensiuni egale, indiferent de bitul de selecţie mai semnificativ.
Dimensiunea unei astfel de zone este de 4Mo/8 = 512 ko.
Dacă dimensiunea unei zone continue este de 256 ko, adresa de selecţie cea mai puţin
semnificativă va fi A18 , pentru că la alegerea unei linii de selecţie mai puţin semnificativă duce la
creşterea numărului se zone de memorie, şi la micşorarea dimensiunii zonei.
A.S.C. I - Seminarii 91
OBS: În mod practic, memoria DRAM se adresează pe un număr de linii de adresă egal cu
jumătate din numărul obţinut din dimensiunea memoriei, deoarece la adresarea DRAM se
foloseşte multiplexarea în timp a liniilor de adresă. În rezolvarea problemelor s-a
considerat că memoria DRAM se adresează fără multiplexare în timp.
3. Se transferă CX în AX; se reface din stivă BX; se face OR între AX şi BX, rezultatul fiind
depus în AX; se depune AX în memorie la adresa al cărei offset este 6623H; se face salt condiţionat
cu ZF la 1242H.
CLI
92 A.S.C. I - Seminarii
INC BX
IMUL BL //AL se consideră implicit
PUSH AL
SHR AX, 1
RET
5. Se încarcă AH cu operandul aflat în memorie la adresa efectivă (AE) dată de BX; se încarcă
AL cu 0F2H; se apelează întreruperea internă 21H; se face OR între AX şi AX; se face salt
condiţionat cu ZF la 0320H.
6. Se setează CF; se adună, cu CF, CX cu BX, iar rezultatul se depune în CX; se face XOR între
CX şi 1271H; se depune CX în memorie la adresa efectivă dată de BP şi de 0321H; se face salt
condiţionat cu NZF la 1995H.
STC
ADC CX, BX
XOR CX 1271H
MOV [BP+0321H], CX //adresare bazată
JNZ 1995H //sau JNE 1995H
7. Se restaurează din stivă BX; se complementează logic DX; se încarcă AX cu operandul aflat
în memorie la adresa efectivă dată de DI, BX şi 0AH; se face înmulţire fără semn între AH şi DL;
dacă rezultatul este zero, se sare la 1187H, altfel se face revenire din subrutină.
POP BX
NOT DX
MOV AX, [DI+BX+0AH]//adresare bazată şi indexată
MUL AH, DL
JZ 1187H //sau JE 1187H
JNZ RET //sau JNE RET
8. Se face apel intrasegment la o subrutină aflată în memorie la o adresă efectivă 7411H; se face
AND între AH şi 048H, iar rezultatul se depune în AH; dacă rezultatul nu este zero, se face salt la
5273H; se citeşte de la portul de I/O, a cărui adresă este 05FH, destinaţia fiind AL; se face validarea
întreruperilor mascabile; se face revenire din întrerupere.
CALL 7411H
AND AH, 048H
JNZ 5273H //sau JNE 5273H
IN AL, 05FH //adresare directă
A.S.C. I - Seminarii 93
STI
IRET