Sunteți pe pagina 1din 31

A.S.C.

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 = baza sistemului de numeraţie iniţial, ai ∈ {0,1,2,…b-1}, i =- m …n şi m,n ∈N


Exemplu:
101011112=1•27+1•25+1•23+1•22+1•21+1•20=128+32+8+4+2+1
2578=2•82+5•81+7•80=128+40+7=17510
AF16=(A•161+F•160)10=101•16+15=17510

Proprietăţile sistemelor de numeraţie

Fie N un număr reprezentat într-un sistem de numeraţie cu baza b , b≥2, b∈N → N,


b = (an an-1 …a1 a0,a-1 a-2…a-m) unde ai ∈ {0,1,2…b-1}, i =- m …n .
1. Împărţirea numărului N la valoarea bazei b se obţine din vechiul număr N, prin deplasarea
virgulei o poziţie mai la stânga.
2. Împărţirea N/bk, unde k apar ţine lui N, se obţine din vechiul număr, prin mutarea virgulei k
poziţii spre stânga. Pentru k > n, numărul devine subunitar adică, în partea stângă, partea
întreagă = 0, iar primele (k-n) poziţii după virgulă se completează cu 0.
Exemplu:
1234.5 : 10 = 123.45; 1234,5 : 106 = 0,0012345;
(1010,11)2 : 2 = (101,011)2 ; (101,11) : 23 = (1,01011)2;
(17AF)16 : 16 = (17A,F)16 .
3. Înmulţirea numărului N cu valoarea bazei b se obţine din vechiul număr N, prin mutarea
virgulei cu o poziţie mai la dreapta.
4. Înmulţirea N•bk, unde k aparţine numerelor naturale, se obţine din vechiul număr N prin
mutarea virgulei cu k poziţii la dreapta. Pentru k > m, ultimele k-m poziţii se vor completa cu
0.
Exemplu:
1234,5•10 = 12345; 123,45•103 = 1234500; (1010,11)2•2 = (10101,1)2;
(1010,11)2•23 = (1010110)2; (17AB)16•16 = (17AB0)16;
5. Reprezentarea bazei b, în sistemul de numeraţie respectiv este unică: (10)b=b10;
64 A.S.C. I - Seminarii

Conversia unui număr, dintr-un sistem de numeraţie în altul

Conversia numerelor întregi se realizează printr-un proces iterativ de împărţire, a


numărului ce urmează a fi convertit, la noua bază. Resturile obţinute în fiecare iteraţie reprezintă
cifrele numărului reprezentat în noua bază. Cel mai semnificativ digit este partea întreagă din ultima
iteraţie, iar cel mai puţin semnificativ digit este restul obţinut la prima iteraţie.
Fie N∈Z şi fie Np = (anan-1…a1a0)p şi Nq = (bmbm-1…b0)q reprezentările numărului N in baza
p şi respectiv in baza q.
N10 = Np = Nq → N/q = Np/q=Nq/q.
Dar Nq/q = (bmbm-1…b0)q = bmbm-1…b1 +b0/q; pe de altă parte împărţirea Np/q va da o parte
întreagă şi un rest r0 → Np/q = Np+r0/q .
Prin identificare, rezultă r0=b0, deci restul obţinut la prima iteraţie este b0 (cel mai puţin
semnificativ digit al numărului în noua bază).
Noua iteraţie va lua doar partea întreagă Np0 şi respective (bmbm-1…b1)q şi prin împărţire la
q rezultă b1, şi aşa mai departe. La ultima iteraţie se vor obţine
bmbm-1/q = bmbm-1 = bm+bm-1/q
Npm-2 = Npm-1+rm-1/q
iar prin identificare rezultă
rm-1 = bm-1
bm = Np(m-1).
Deci cel mai semnificativ digit al numărului în noua bază, bm este partea întreagă din
ultima iteraţie.
Conversia numerelor subunitare se realizează printr-un proces iterativ de înmulţire, a
numărului reprezentat iniţial, cu noua bază. Partea întreagă care se obţine la fiecare iteraţie j este
cifra de rang b-j din noua reprezentare. Fie N∈(0,1) şi Np = (0,a-1a-2...a-n)p şi Nq = (0,b-1b-2...b-m)q
reprezentările numărului N în baza p şi respectiv baza q. N10 = Np = Nq rezultă N•q = Np•q = Nq•q.
Dar Nq•q = (b-1,b-2...b-m)q. Pe de altă parte Nq•q va da o parte întreagă Np (-1) şi o parte fracţionară:
Nq•q = Np (-1),a-1’…a-n’.
Prin identificare, rezultă b-1=Np(-1), deci partea întreagă obţinută la prima iteraţie este cifra
de rang b-j din noua reprezentare. Noua iteraţie va lua doar partea fracţionară şi, prin înmulţire cu q
şi identificare, vor rezulta b-2, …, b-m.
Pentru conversia unui număr dintr-o bază b1 în una b2, trebuie să se cunoască tablele
înmulţirii şi împărţirii din veche bază. De aceea, în exemple s-a considerat vechea bază 10.

Binar Zecimal Hexa


0000 0 0
0001 1 1
0010 2 2
0011 3 3
0100 4 4
0101 5 5
0110 6 6
0111 7 7
1000 8 8
1001 9 9
1010 10 A
1011 11 B
1100 12 C
1101 13 D
1110 14 E
1111 15 F
A.S.C. I - Seminarii 65

Conversii particulare de numere

a) Conversia din orice bază b în baza 10:


Fie numărul N, reprezentat în baza b : Nb=(an, an-1, … , a1, a0, a-1, … , a-m). Conversia în
n
baza 10 se face după relaţia: N10 = ∑a j ⋅b j ; simbolurile a şi b sunt reprezentate în baza 10.
j =−m
Exemple: numărul (1010)2 = 1•23+0•22+1•21+0•20=(10)10;
numărul (143)5 = 1•52+4•51+3•50=(48)10;

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.

Operaţii aritmetice efectuate în sisteme de numeraţie

Pentru efectuarea operaţiilor aritmetice simple (adunarea, scăderea, înmulţirea, împărţirea)


între două numere reprezentate într-o anumită bază, trebuie cunoscut tabelul operaţiei între
simbolurile operaţiei respective.
1. Pentru efectuarea operaţiilor într-o bază mai mică decât 10, trebuie doar să se transpună
rezultatul din baza 10 în baza respectivă.
Exemplu:
7 +2 =9
7Q + 2Q =11Q = (9)10
Această simplificare este posibilă pentru că simbolurile unei baze mai mici ca 10 sunt şi
simboluri ale bazei 10.
2. Pentru efectuarea unei operaţii într-o bază mai mare ca 10, dacă nu se cunosc tabelele
operaţiei :
- se va face conversia simbolurilor în baza 10;
- se efectuează operaţia în baza 10;
- se face conversia rezultatului în baza iniţială.
66 A.S.C. I - Seminarii
Exemplu:
FH + EH =?
FH =15; EH =14;
15 +14 = 29
29 =1DH ⇒FH + EH =1DH

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.

Reprezentarea informaţiilor într-un sistem de calcul

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ă.

Reprezentarea datelor numerice

1. Reprezentarea numerelor în virgulă fixă


Are formatul derivat direct din reprezentarea zecimală a numerelor, ca o secvenţă de cifre,
separate de un punct zecimal;
Exemplu în sistemul binar : N = bn…b1b0.b-1b-2…b-m .
Stabilind o poziţie fixă pentru virgulă, orice număr N poate fi transformat printr-o scalare
cu un număr de forma 2k, într-un număr cu virgula în acea poziţie fixă.
Exemplu: N • 2m = număr întreg cu virgula după cel mai puţin semnificativ bit;
N • 2-n = număr subunitar, cu virgula înaintea celui mai semnificativ bit.
Deoarece poziţia fixă a virgulei depinde doar de o scalare, se va lucra doar cu numere
întregi, considerând virgula după cel mai puţin semnificativ bit.
Folosind formatul pe n biţi al unui număr N = bn-1 … b1b0 , dacă acesta sete un număr fără
semn, cele 2n combinaţii binare posibile pe n biţi vor reprezenta 2n numere diferite, în următoarele
intervale:
a) N = număr întreg (virgula este poziţionată după cel mai puţin semnificativ bit)
0 ≤ N ≤ 2n-1 ⇔ {0, 1, … , 2n-1};
b) N = număr subunitar (virgula este situată înaintea celui mai semnificativ bit)
1 2 2 n -1
0 ≤ N ≤ 1-2-n ⇔ { 0, n , n , ... , n }; ⇔ scalarea cu 2n a intervalului precedent.
2 2 2
Obs: Pentru a putea reprezenta în formatul virgulă fixă, şi numerele negative, unul din biţii
reprezentării va trebui să fie bitul de semn.

Reprezentările numerelor negative:

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;

2) Codul complement faţă de 1 trece de la un număr pozitiv N la valoarea sa negativă, -N,


negând logic şi semnul şi magnitudinea; se realizează deci negarea logică a numărului N.
Fie N > 0, N = 0b n - 2 b n -3 ...b 1b 0
- N = N = 1b n - 2 bn − 3 ... b1 b0
Trecerea la –N se poate face şi prin operaţii aritmetice:
-N = 2n - N -1
Intervalul de valori ce poate fi reprezentat pe n biţi este [-2n-1+1;2n-1-1].
Obs: • Din cele 2n combinaţii posibile pe n biţi, jumătate sunt pozitive şi jumătate sunt negative;
• Valoarea 0 are tot două reprezentări: +0 = 0…0 şi - 0 = 1…1, deci în codul complement faţă
de 1, 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: 1100;

2) Codul complement faţă de 2 trece de la un număr pozitiv N la valoarea sa negativă, -N,


negând logic pe N şi adunând o unitate (operaţie logică şi adunare).
Fie N > 0, N = 0b n - 2 b n -3 ...b 1b 0
−N = N +1
Trecerea la –N se poate face şi prin operaţii aritmetice:
-N = 2n - N
Intervalul de valori ce poate fi reprezentat pe n biţi este [-2n-1;2n-1-1].
Obs: •Valoarea 0 are o singură reprezentare: - 0 = + 0 = 0…0, ignorându-se bitul carry ce poate
apare la transformarea din – 0 în 0;
• Spre deosebire de celelalte două moduri, pentru că valoarea 0 are o singură reprezentare pe
n biţi sunt reprezentate 2n valori distincte;
• Reprezentarea numerelor negative în cod complement faţă de 2 se poate obţine şi după
următoarea regulă:
se inversează toate cifrele binare ale reprezentării, pornind de la cifra cea mai
semnificativă, până la ultima cifră de 1 din număr, ce rămâne neschimbată, împreună cu
zerourile ce o pot urma.
Exemplu:
N =1010100B
- N =1010100B =0101100B

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.

Operaţii cu numere reprezentate în virgulă fixă


Pentru numerele binare fără semn, operaţiile se efectuează după aceleaşi reguli din
sistemul de numeraţie zecimal.

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.

Regula de înmulţire binară : pentru toate poziţiile înmulţitorului j care au valoarea 1, (


j =0, n −1 ), se deplasează deînmulţitul N1 cu j poziţii şi se adună numerele obţinute.

Obs: • Operaţia de înmulţire a fost înlocuită cu operaţii de deplasare şi cu operaţii de adunare;


• Numărul maxim de operaţii ce trebuie realizate se obţine atunci când N2 are pe toate cele n
poziţii, valori de 1, deci se realizează (n-1) deplasări ale lui N1 şi (n-1) adunări. Numărul
maxim de operaţii este 2•(n-1).
• Algoritmul trebuie să facă şi n testări, pentru a determina poziţiile de 1.
Exemplu: pentru n = 8 se realizează maxim 14 operaţii, faţă de algoritmul a1) în care numărul
maxim de operaţii era de 254.

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.

Operarea cu numere zecimale se poate realiza prin exprimarea numerelor zecimale în


numere binare, cu ajutorul unor coduri de conversie. Un astfel de cod este codul BCD (Binary
Coded Decimal), care codifică cifrele bazei 10 {0, … , 9} cu valorile lor binare pe 4 biţi.
Un număr N din baza 10 va fi exprimat în baza 2, prin înlocuirea fiecărei cifre a numărului
cu valoarea sa BCD.
Există două tipuri de codificare BCD:
- BCD neîmpachetat, în care fiecare cifră a numărului N se exprimă pe un octet, de forma:
0000 BCD;
- BCD împachetat, în care pe un octet se reprezintă 2 cifre ale unui număr N:
BCD2 BCD1
Exemplu: N = 15 va fi exprimat în cod:
- BCD neîmpachetat pe 2 octeţi: 0000 0001 0000 0101
- BCD împachetat pe 1 octet: 0001 0101
Unitatea centrală păstrează numerele exprimate în BCD în registre, dar când se efectuează
operaţii cu aceste numere, le tratează ca numere binare, obţinând rezultatul binar. Pentru a obţine
rezultatul tot în cod BCD, acesta trebuie ajustat. Deoarece programatorul este cel care ştie că
lucrează cu numere BCD, el trebuie să indice unităţii centrale, printr-o instrucţiune specifică, după
efectuarea fiecărei operaţii cu numere BCD, că rezultatul trebuie ajustat.
Exemplu:
Adunarea a două numere BCD împachetat, N1 = 79 = 0111 1001B şi N2 = 38 = 0011 1000B
N1 + N2 =1 ← 0001 0111 B
Regula de corecţie a rezultatului este : pentru fiecare poziţie BCD din rezultat (4 biţi),
dacă în timpul operaţiei apare un transport către valoarea BCD următoare, sau dacă valoarea binară
a poziţiei BCD este mai mare ca 9, atunci pe poziţia BCD respectivă se adună valoarea 6
Obs: Într-un octet, transportul de la o valoare BCD împachetat la următoarea valoare BCD este de
fapt transportul de la bitul 3 la bitul 4, transport care se numeşte AC = „Auxiliay Carry”
(transport auxiliar), care este semnalat de către UAL din UC printr-un bit indicator, numit AF
(Auxiliary carry Flag).

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

2. Un modul de memorie primară are următoarea hartă de memorie:


A.S.C. I - Seminarii 75
200000H
a) determinaţi dimensiunea modulului de memorie respectiv şi a bank-urilor de
1FFFFFH
memorie componente; completaţi adresa de început şi de sfârşit a fiecărui bank 2
180000H
în hartă; 17FFFFH
b) determinaţi liniile de adresă de selecţie a bank-urilor în modul şi scrieţi 3
100000H
tabelul de selecţie; 4
0FFFFFH
c) ce adresă va avea a doua locaţie din bank-ul 3, dar a 200-a ? 080000H
07FFFFH
1
000000H
a) adresa maximă = 1FFFFFH ⇒ 21 linii de adresă pentru adresarea modulului:
A20, …, A0
dim mod ul
dim modul = 221 o = 2Mo ⇒ dim 1 = dim 2 = dim 3 = dim 4 =
numar de bank - uri
dim bank = 221/4 = 219 o = 512 ko ⇒ 19 linii pentru adresarea bank-urilor, din cele 21 ale
modulului ⇒ 2 linii de adresă pentru selecţie.

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

c) • a II-a locaţie ⇒ offset = 1


AB = 100000H;
⇒ adresa = 100001H;
• a 200-a locaţie ⇒ offset 199 = C7H
⇒ adresa = 1000C7H.

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

dimm o d u> dl imc ir c u it


  ⇒ se foloseşte conectarea în paralel a ieşirilor
1 c u vm. o d u= 1l c u vc.ir c u it

dim mod ul 64 ko
N= = = 4 circuite
dim circuit 16 ko
Modulul se realizează din 4 CI de memorie, conectate cu ieşirile în paralel. Din cele 16
linii de adresă folosite pentru adresarea modulului, 14 vor merge sub formă de linii de adresă la
circuitele de memorie, iar 2 vor genera semnalele de selecţie Sel 0, … , Sel 3, prin intermediul unui
circuit de selecţie.

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:

A15 A14 Circuit


0 0 1
0 1 2 c)
1 0 3
0 1 00
  0000
0000
0000
  ⇒ adresa
1 1 4 16384 = 4000H = A15 A14
16384
offset
adresează cuvântul aflat în zona 2, offset-ul 0 (primul cuvânt din al doilea circuit integrat de
memorie)
A.S.C. I - Seminarii 77
4.a) Să se realizeze un modul de memorie SRAM de capacitate 8 kcuv, 1 cuv. = 16 biţi,
folosindu-se circuite SRAM de 4k x 16 (4kcuv, 1cuv. = 16 biţi).
b) Să se deseneze harta de memorie a modulului, ştiind că selecţia se face pe linia de adresă A 11.
Explicaţi cum poate fi modificată harta de memorie.
c) Ce locaţie de memorie va fi adresată, prin funcţia de adresare, de adresa 4096 ?

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 mI 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

 d C = i64c mI u 1c Mv> u1 C vc uI v


 
 1c = 1 u b v
dim cuv M 8
Numărul de circuite necesare = = =8
dim cuv CI 1
Deoarece nu se specifică nimic despre dimensiunea cuvintelor ce se citesc din memorie, se
va considera că se citesc doar cuvinte de 8 biţi, deci toate cele 8 CI se vor selecta cu o singură linie
de selecţie.

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 C = i64c mI u 1c Mv> u1 C vc uI v


 
 1c = 8 u b v
dim cuv M 32
Numărul de circuite necesare = = =4
dim cuv CI 8
b)
14 linii de adresă ⇒
a d r e sma in im= ã0 0 0 0 0 0 0 0 0 0 0 =0 0 0 0 0H
⇒ harta de memorie:
a d r e sma a x im= 1ã 11 1 1 1 1 1 1 1 1 =1 3 F F FH
3FFFH
16k cuv
1 cuv.= 32b
0000H

c) Modulul de memorie este realizat din 4 CI de memorie, cu dimensiunea cuvântului de 1o.


Transferul de date se poate face în orice combinaţie de octeţi, din cei 4 ⇔
)
- 4 o sim ultan( 1 co m b in atie
) 
- 3 osim ultan( 4 co m bin atii
 ⇒ 15 combinaţii posibile ale valorilor liniilor de selecţie.
- 2 o sim ultan( 6 com b in atii
)
- 1 o ( 4 co m bin atii) 
Se vor folosi 4 linii suplimentare care prin intermediul circuitului de selecţie vor determina
tipul transferului:
C0 C1 C2 C3 Sel0 Sel1 Sel2 Sel3 Nr. octeţi CI de memorie sunt active când
0 0 0 0 0 0 0 0 4 linia de selecţie are valoarea 0
0 0 0 1 0 0 0 1
0 0 1 0 0 0 1 0
logic.
0 1 0 0 0 1 0 0
3 Am ales ca cele 4 linii
1 0 0 0 1 0 0 0 suplimentare să coincidă cu liniile
0 0 1 1 0 0 1 1 de selecţie pentru module:
0 1 0 1 0 1 0 1 C0 = Sel0; C1 = Sel1; …
1 0 0 1 1 0 0 1
0 1 1 0 0 1 1 0
2
1 0 1 0 1 0 1 0
1 1 0 0 1 1 0 0
0 1 1 1 0 1 1 1
1 0 1 1 1 0 1 1
1 1 0 1 1 1 0 1
1
1 1 1 0 1 1 1 0
A.S.C. I - Seminarii 81
Circuitul de selecţie va avea rolul de a elimina situaţia în care toate cele 4 linii au valoarea 1,
pentru că în acest caz, toate cele 4 CI de memorie ar fi inactive.

7. Un modul de memorie DRAM are două bank-uri de memorie de câte 32 ko.


a) Ştiind că selecţia celor două bank-uri este realizată de linia de adresă A15 să se deseneze harta
de memorie a modulului.
b) Cum se modifică harta de memorie dacă selecţia se face cu linia A14 ?
c) Pentru situaţia de la punctul b), indicaţi adresa primei locaţii de memorie din bank-ul II.

 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:

A15 A14 A0 bank Harta de memorie:


FFFFH 0
I 0000H 0 … 0
I … … … … I
8000H 0
7FFFH 1 1
7FFFH 1
I 8000H 0 0
… … … … II
0000H 1
FFFFH 1 1

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

c) pentru cazul b) prima locaţie de memorie din bank-ul II:


bank-ul II ⇒ A14 = 1
prima locaţie ⇒ offset-ul = 0
⇒ 0100 0000 0000 0000 = 4000H

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 ?

 d Mi= 3m c 2 = u21 kc 5v u  s fv e o c l o îsnpn e eal isacre t ates a l i er el a


 
 1c = 8ub vi t i   1 l i5d an e dip i rea e nd s mtr ã re uo s da ru e l au l u
a)
⇒ 
 d C i= 1m Ic 6 = u21 kc 4v u  1 lv i4d an e dip i rea e nd sc tr ã ire iru s,c a u r i e t ua l u
   1l ip n es i en u l t dner c uci 2ecn t i li a era c u i t e .
 1c = 8ub vi t i 
dim M 32
Nr . circuite = = =2
dim CI 16
dim MP = 1M cuv = 2 20 cuv
 ⇒ 20 linii de adresă pentru adresarea MP.
1 cuv = 8 biti 
Modulul ROM este situat în harta de memorie primară, în zona adreselor cele mai mari,
deci pentru adresarea modulului se folosesc cele mai semnificative linii (din cele 20):
A19 A18 . . . A 6 A 5 A 4 . . . A 0
   
15 linii (pt. modul)
Fie liniile de adresă pentru adresarea modulului : B15B14…B0 ⇒ din harta de memorie se
obţine tabelul de adevăr a memoriei primare. Adresarea modulului se face pe 15 linii ⇒ 4 cifre
A.S.C. I - Seminarii 83
hexa; adresarea MP se face pe 20 linii ⇒ 5 cifre hexa; conversia adresei din modul în MP se face
prin adăugarea a 5 zerouri (20 – 15 = 5) la sfârşitul adresei de modul:
Prima zonă a bank-ului I are adresa de început:
0000H = 000 0000 0000 0000 – în modul;
0000 0000 0000 0000 0000 = 00000H – în MP;
şi adresa de sfârşit: A19(B15) A18(B14) A17(B13) … A5(B0) … A0 Bank
00000H 0 0 0 … 0 … 0
40000H – 1=3FFFFH = … … … … … …… I
= 0011 1111 1111 1111 1111 3FFFFH 0 0 1 … 1 … 1
2000H = 010 0000 0000 0000 40000H 0 1 0 … 0 … 0
0100 0000 0000 0000 0000=40000H … … … … … …… II
7FFFFH 0 1 1 … 1 … 1
4000H = 100 0000 0000 0000 80000H 1 0 0 … 0 … 0
1000 0000 0000 0000 0000=80000H … … … … … …… I
6000H = 110 0000 0000 0000 BFFFFH 1 0 1 … 1 … 1
1100 0000 0000 0000 0000=C0000H C0000H 1 1 0 … 0 … 0
… … … … … …… II
FFFFFH 1 1 1 … 1 … 1
b) Din tabelul de adevăr se observă că adresarea circuitului se face cu linia de adresă A 18 a MP (sau
cu penultima linie de adresă a modulului). Ştiind că circuitele sunt active când linia de selecţie are
valoarea 0 logic ⇒ tabelul de adevăr pentru circuitul de selecţie:
A18 S1 S2
0 0 1
Deci S1 = A18 şi S2 = A 18

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

9.a) Să se realizeze un modul de memorie SRAM de 128 ko folosindu-se circuite SRAM de 64 k x


4.
b) Să se implementeze circuitul de selecţie a memoriilor SRAM.
c) Să se deseneze harta de memorie a modulului, ştiind că selecţia bank-urilor în modul se face
cu linia de adresă A16. Cum se modifică harta de memorie dacă selecţia se face cu A17 ?

 d m i =m1 ok c2 =d2u1 8c u7v u l− s vf e o c l o m ns e i sxc t t e a r e a


 
 1 = 8cb u i tv i   1 l i7p n ae i dni m rt re do u cs id: a n ur el ua l u i ,
a)
⇒ 
 d c i im= 6r k c c4= 2u1uc 6v iu t1 lv i6p n ae i dni b rt-uare unr s i akl or e r a
   1l ip n se i eneb l -tuae r nlcu u kt i a
 1 = 4c b u i tv i 
84 A.S.C. I - Seminarii
dim modul 128
Nr. bank-uri/modul = = =2
dim circuit 64
dim cuvant modul 8
Nr. circuite/bank = = =2
dim cuvant circuit 4

b) Deoarece nu se specifică, voi


considera că transferul de date se
realizează doar pe octeţi. Astfel în
interiorul bank-ului, CI de memorie
sunt selectate cu aceeaşi linie se
selecţie.
Circuitul de selecţie va trebui să
selecteze unul dintre cele două bank-
uri de memorie, funcţie de o linie de
adresă, Ax.
Ax Sel1 Sel2
0 0 1
1 1 0
⇒Sel 1 = A x ; Sel 2 = A x

c) 17 linii de adresă se codifică pe 5 cifre hexa


Tabelul de adevăr:

Bank selectat de Harta de memorie pentru


A17 A16 A15 … A0
A16 A17 - selecţia cu A16: - selecţia cu A17:
00000H 0 0 0 … 0
3FFFFH 3FFFFH
… … … … … I II
0FFFFH 0 0 1 … 1 30000H
I
10000H 0 1 0 … 0 2FFFFH II
… … … … … II I
1FFFFH 0 1 1 … 1 20000H 20000H
20000H 1 0 0 … 0 1FFFFH 1FFFFH
… … … … … I II
2FFFFH 1 0 1 … 1 10000H
30000H 1 1 0 … 0
II 0FFFFH I
… … … … … II I
00000H 00000H
3FFFFH 1 1 1 … 1

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 = 512 k cuv 


 ⇒ dim modul = 256k cuv
MP este formatã din douã module egale
Modulul este realizat cu CI de 128k cuv ⇒ fiecare modul este realizat cu câte 2 CI de memorie.
Memoria primară este realizată prin conectarea în paralel la ieşire;

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.

Adresarea MP se face pe 19 linii de adresă, ce sunt codificate pe 5 cifre hexa.


Tabelul de adevăr pentru MP:

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

11.a) Să se realizeze o MP de 128 ko, folosind circuite DRAM de 64 kb.


b) Să se deseneze harta de memorie a modulului, ştiind că bitul de adresă A16 face selecţia bank-
urilor.
c) Cum se modifică harta de memorie, dacă selecţia se face cu adresa A14 ?
86 A.S.C. I - Seminarii

 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 ⇒

dim MP = 256 ko = 218 ⇒ 18 linii pentru adresarea MP;


dim modul = 128 ko = 217 ⇒ 17 linii pentru adresarea în interiorul modulului;
1 linie pentru selecţia modulului.

MP este adresată pe 18 biţi, codificaţi pe 5 cifre hexa.

Tabelul de adevăr pentru MP:


zona modul
A17 A16 A15 … A0 modul, zona
00000H 0 0 0 … 0
… … … … … I1
0FFFFH 0 0 1 … 1
10000H 0 1 0 … 0
… … … … … II1
1FFFFH 0 1 1 … 1
20000H 1 0 0 … 0
… … … … … I2
2FFFFH 1 0 1 … 1
30000H 1 1 0 … 0
… … … … … II2
3FFFFH 1 1 1 … 1

⇒ 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:

A21 A20 A19 A18 … A0 Circuit Tabelul de selecţie a circuitului:


000000H
A21 0 19
A 0 0
Circuit 0 … 0
0 …0 … I … … … … I
07FFFFH 0 0 0 1 … 1
0
080000H 01 0 II 1 0 … 0
1 …0 … III … … … … II
1
0FFFFFH 01 0 IV 1 1 … 1
100000H 0 1 0 0 … 0
… … … … … … I Harta memoriei:
17FFFFH 0 1 0 1 … 1
380000H
180000H IV0 1 1 0 … 0
… … …
300000H … … … II
1FFFFFH III0 1 1 1 … 1
200000H 1 0 0
280000H 0 … 0
IV… … … … … … III
27FFFFH 200000H
III1 0 0 1 … 1
280000H 1 0 1 0 … 0
… 180000H
… … … … … IV
II
2FFFFFH 1 0 1 1 … 1
100000H
300000H I1 1 0 0 … 0
… … …
080000H … … … III
37FFFFH II 1 1 0 1 … 1
380000H 1 1 1
000000H 0 … 0
I… … … … … … IV
3FFFFFH 1 1 1 1 … 1

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

14. Un modul de memorie DRAM are 4 zone de memorie notate de la 1 la 4, iar


harta de memorie a modulului este următoarea:
a) Ce dimensiune are modulul de memorie DRAM ?
b) Determinaţi liniile de adresă care realizează selecţia celor 4 zone de memorie.
c) Ce adresă are ultima locaţie din zona 3 ?
d) Care trebuie să fie liniile de adresă de selecţie, pentru ca zonelor de memorie
să le corespundă spaţii de adrese continue?

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 imm o= 2dMuc lu v .


 
 1 c = u3 bv2 i t i 
⇒ se foloseşte conectarea mixtă

 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.

Probleme la setul de instrucţiuni

Să se realizeze următoarele programe în limbaj de asamblare pentru microprocesorul I8086,


arătându-se tipurile de adresare folosite de fiecare instrucţiune şi registrele implicate în calculul
adresei fizice (AF):

1. Se încarcă AX cu valoarea 0724H; se adună AX cu BX; se incrementează BX; se salvează în


stivă AX; se face salt necondiţionat intrasegment la 0180H.

MOV AX, 0724H //adresare imediată


ADD AX, BX
INC BX
PUSH AX
JMP 0180H

2. Se încarcă AL cu un operand din memorie de la o adresă de memorie a cărui offset este


3244H; se reface din stivă CH; se face XOR între AL şi CH, rezultatul fiind depus în AL; se
deplasează logic, la stânga, registrul AL, cu 1 poziţie; se face salt condiţionat cu CF la 1457H.

MOV AL, [3244H] //adresare directă, adresa efectivă se calculează cu registrul DS


POP CH
XOR AL, CH
SHL AL, 1
JC 1457H

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.

MOV AX, CX //adresare de registru


POP BX
OR AX, BX
MOV [6623H], AX //adresare directă, adresa efectivă se calculează cu DS
JZ 1242H // sau JE 1242H

4. Programul este o subrutină şi trebuie să execute următoarele instrucţiuni: să dezactiveze


întreruperile mascabile; se incrementează BX; se face înmulţire cu semn între AL şi BL; rezultatul
înmulţirii se depune în stivă; se deplasează la dreapta AX cu 1 poziţie; revenirea din subrutină.

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.

MOV AH, [BX] //adresare indirectă prin registru


MOV AL, 0F2H //adresare imediată
INT 21H
OR AX, AX
JZ 0320H //sau JE 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

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