adresarea memoriei eugen - cs.ucv.ro · 3 opcode adresĂ n l l in câmpul de adresa apar acele...

16
1 TEHNICI DE ADRESARE A MEMORIEI Generalităţi privind adresarea memoriei S-a arătat că unitatea de memorie în calculatoarele contemporane se realizează cu ajutorul modulelor integrate. Legătură dintre CPU şi memoria principală se realizează prin trei magistrale: magistrala de adrese ADRBUS; magistrala de date DATA BUS; magistrala de control CONTROL BUS. Magistrala de adrese este unidirecţională, cea de date este bidirecţională, iar cea de control conţine linii de comandă, dar şi linii informaţie de stare. Memoria este organizata pe locaţii: 0 B m-1 ……… B 1 B 0 1 k-1 k k+1 2 n - 1 O locaţie are m ranguri notate B m-1 , … B 1 , B 0 . Citirea şi scrierea memoriei se face paralel, deci, se scrie sau se citeşte un cuvânt pe m biţi. Adresarea memoriei se face prin magistrala de adrese (ADRBUS) şi se presupune că această magistrală are n linii. Pentru fiecare combinaţie de biţi ai acestei magistrale se defineşte o anumită adresă. Deci, legătura între conţinutul magistralei şi o anumită locaţie se face printr-un proces de decodificare. Dacă magistrala de adrese are n linii atunci mulţimea adreselor este 2 n . A = {0,1,...2 n -1} unde: A = spaţiul adreselor

Upload: others

Post on 24-Oct-2019

3 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Adresarea memoriei EUGEN - cs.ucv.ro · 3 OPCODE ADRESĂ n l L In câmpul de adresa apar acele elemente constitutive ale adresei logice din care prin efectuarea anumitor calcule se

1

TEHNICI DE ADRESARE A MEMORIEI Generalităţi privind adresarea memoriei S-a arătat că unitatea de memorie în calculatoarele contemporane se realizează cu ajutorul modulelor integrate. Legătură dintre CPU şi memoria principală se realizează prin trei magistrale:

• magistrala de adrese ADRBUS; • magistrala de date DATA BUS; • magistrala de control CONTROL BUS.

Magistrala de adrese este unidirecţională, cea de date este bidirecţională, iar cea de control conţine linii de comandă, dar şi linii informaţie de stare. Memoria este organizata pe locaţii:

0 Bm-1 ……… B1 B0 1 … … … …

k-1 k

k+1 … … … …

2n - 1 O locaţie are m ranguri notate Bm-1, … B1, B0. Citirea şi scrierea memoriei se face paralel, deci, se scrie sau se citeşte un cuvânt pe m biţi. Adresarea memoriei se face prin magistrala de adrese (ADRBUS) şi se presupune că această magistrală are n linii. Pentru fiecare combinaţie de biţi ai acestei magistrale se defineşte o anumită adresă. Deci, legătura între conţinutul magistralei şi o anumită locaţie se face printr-un proces de decodificare. Dacă magistrala de adrese are n linii atunci mulţimea adreselor este 2n.

A = {0,1,...2n -1} unde: A = spaţiul adreselor

Page 2: Adresarea memoriei EUGEN - cs.ucv.ro · 3 OPCODE ADRESĂ n l L In câmpul de adresa apar acele elemente constitutive ale adresei logice din care prin efectuarea anumitor calcule se

2

Pe de altă parte, dându-se o geometrie a memoriei rezultă mulţimea locaţiilor fizice în care sunt memorate cuvinte care conţin m biţi. Definiţie: Mulţimea tuturor locaţiilor fizice definite de o geometrie a memoriei se numeşte spaţiul memoriei M. Legătura între spaţiul adreselor şi spaţiul memoriei este dată de o funcţie de translatare definită astfel: fT : A M. Conform celor discutate, această funcţie corespunde unei funcţii de decodificare. În cazul sistemelor simple (microcalculatoarele) cele 2 mulţimi vor fi identice M = A şi astfel f este foarte simplă. Atunci când lăţimea cuvântului memorie nu este suficientă pentru reprezentarea datei, atunci se vor utiliza mai multe locaţii consecutive. Dacă de exemplu, o dată se reprezintă pe două cuvinte în memorie (UIA), atunci pentru a reprezenta data, se va folosi prima locaţie pentru reprezentarea cuvântului mai puţin semnificativ (de la adresa j), iar locaţia următoare (adresa j+1) pentru cuvântul mai semnificativ. Procesoarele moderne au facilităţi de gestiune a memoriei. Operaţiile de gestiune se referă la implementarea memoriei virtuale, protecţia memoriei etc. Unitatea de gestiune a memoriei (Memory Management Unit - MMU) poate fi încorporată în unitatea de control din CPU sau poate fi externă unităţii de control. În particular, în cazul microprocesoarelor pot fi încorporate în microprocesoare sau sunt livrate ca un modul separat - modulul MMU). Pentru implementarea conceptului de memorie virtuală se foloseşte următoarea schemă de principiu:

AL reprezintă adresa logică care este generată de CPU prin citirea instrucţiunii curente. Prin prelucrarea adresei logice în MMU rezultă adresa fizică. MMU realizează o alta funcţie de translatare fT

* : AL → AE. fT* realizează translatarea între adresele logice (virtuale) şi cele fizice

(reale). Dacă adresa logică nu are corespondent fizic în memoria principală, atunci se generează comenzile de transfer (CT) pentru transferul între memoria externă şi memoria principală. Realizarea practică a conceptului de memorie virtuală se bazează pe transferul în blocuri între memoria externă şi memoria principală. Cea mai răspândită metodă de implementare este metoda segmentării memoriei. S-a arătat că fiecare instrucţiune la nivel cod maşina este formată din 2 câmpuri mari:

Page 3: Adresarea memoriei EUGEN - cs.ucv.ro · 3 OPCODE ADRESĂ n l L In câmpul de adresa apar acele elemente constitutive ale adresei logice din care prin efectuarea anumitor calcule se

3

OPCODE ADRESĂ n l

L

In câmpul de adresa apar acele elemente constitutive ale adresei logice din care prin efectuarea anumitor calcule se determină adresa efectivă sau adresa fizică. În cazul adresei efective: AE = f(AL) unde:

AL - adresa logica; AE - adresa efectivă

Pe lângă aceste elemente constitutive din câmpul de adresă, care formează adresa logică, pot interveni şi alte elemente care sunt memorate în registrele din CPU sau memorie. La calculatoarele moderne rareori adresa efectivă coincide cu adresa logică. Din contră, în structura modernă această funcţie este din ce în ce mai complexă. Scopul este de a asigura o mare flexibilitate în programare, precum şi de a scurta lungimea programelor. Se are în vedere şi scurtarea lungimii instrucţiunilor, aceasta în condiţiile în care volumul total al memoriei adresate (deci spaţiul memoriei) este din ce în ce mai mare. S-a arătat că un ciclu instrucţiune este format din 2 faze mari. Fiecare fază este împărţită în subfaze ca în figură.

Fetch Execute

Fetch AE Fetch Data Execute

Faza a doua (AE) este importată în studiul de faţă în care are loc calculul adreselor efective pentru operand (deci determinarea lui AE). I. Adresare tip operand presupus Există situaţia în care operandul este subînţeles ca parte integrantă din OPCODE, deci nu trebuie să apară în mod explicit în instrucţiune (nici ca valoare, nici ca adresă). De exemplu:

• instrucţiunea de incrementare - valoarea de incrementare 1 este subînţelesă, deci dacă se execută instrucţiunea de incrementare are loc creşterea acumulatorului cu 1.

• instrucţiunea SHIFT - se presupune că valoarea de deplasare este 1, deci nu este nevoie să facem altă precizare.

II. Adresare implicită S-a arătat că la instrucţiunea cu două sau cu o adresă în realizarea operaţiilor intervine un registru special din CPU, anume acumulatorul. Acesta intervine prin însăşi construcţia calculatorului. Nu este necesar sa se dea explicit.

Page 4: Adresarea memoriei EUGEN - cs.ucv.ro · 3 OPCODE ADRESĂ n l L In câmpul de adresa apar acele elemente constitutive ale adresei logice din care prin efectuarea anumitor calcule se

4

OPCODE ADR1 ADR2 ACC (ADR1)*(ADR2)

OPCODE ADR ACC (ADR)*(ACC) Mai mult la CPU moderne pot fi desemnate anumite registre generale care să memoreze o adresă de operand. Aceste registre generale se numesc DATA COUNTER. La proiectarea CPU se ţine seama de mecanismul adresării implicite astfel: operandul se citeşte din memorie de la adresa dată de Data Counter, adică acest registru este pe post de numărător având facilităţi de incrementare sau decrementare. în acest fel el permite adresarea pentru un bloc de date. Rezultă că se distinge adresarea implicita prin DC prin autoincrementare sau autodecrementare. Suplimentar trebuie să se prevadă acea operaţie de încărcare (LOAD adresa) a adresei de început a blocului de date. Se disting două variante de realizare a operaţiei de citire a operandului:

• înainte de incrementare/decrementare; incrementare/decrementare post-operaţie; • după incrementare/decrementare - incrementare/decrementare pre-operaţie.

Este o adresare implicită cu incrementare post-operaţie. Pas I - are loc adresarea locaţiei A212, unde face CLEAR (se curăţă) Pas II - DC-ul se incrementează căpătând valoarea A213.

Adresare implicită cu incrementare post-operaţie

Page 5: Adresarea memoriei EUGEN - cs.ucv.ro · 3 OPCODE ADRESĂ n l L In câmpul de adresa apar acele elemente constitutive ale adresei logice din care prin efectuarea anumitor calcule se

5

Este o adresare implicită cu decrementare pre-operaţie. Pas I - modificarea conţinutului DC prin decrementare, se trece la adresa BE23 Pas II - are loc CLEAR la adresa BE23. Observaţie: Există CPU la care se pot defini simultan mai multe DC deci se pot baleia simultan mai multe blocuri de date. III. Adresarea imediată Acest mecanism de adresare încalcă principiul general de adresare; operandul nu se memorează separat de instrucţiune, ci face parte integrantă chiar din instrucţiune. Acest operand se numeşte dată imediată.

OPCODE ID OPERAND Având în vedere că în formatul instrucţiune intervine şi câmpul de OPCODE rezultă că lungimea operandului va fi mai scurtă decât a operandului standard din calculator, dar principalul avantaj al datei imediate este că aceasta devine disponibilă după realizarea fazei fetch instrucţiune, faza fetch data nu mai este necesară. Fiecare fetch presupune un ciclu de citire a memoriei, care este consumator de timp, dar cum adresarea imediată oferă operandul odată cu instrucţiunea execuţia este mult mai rapidă. În cazul minicalculatorului cu cuvinte pe 16 biţi, data imediată însoţeşte OPCODE-ul sub forma unui cuvânt de 16 biţi (mai întâi apare OPCODE-ul şi apoi data imediată).

Adresare implicită cu decrementare pre-operaţie

Page 6: Adresarea memoriei EUGEN - cs.ucv.ro · 3 OPCODE ADRESĂ n l L In câmpul de adresa apar acele elemente constitutive ale adresei logice din care prin efectuarea anumitor calcule se

6

8 biţi 16 biţi

……… ……… ……… ………

OPCODE Instrucţiune OPCODE Instrucţiune Data imediată Data imediată

……… ……… ……… ……… M. O. M. O.

IV. Adresare directă Adresarea directă reprezintă cel mai natural mod de adresare a memoriei la care adresa logică coincide cu adresa efectivă. Distingem următoarele subclase de adresare directă: 1. adresare directă cu referire la registru; 2. adresare directă cu referire la memorie; 3. adresare directă cu referire la un dispozitiv de intrare-ieşire; 4. adresare directă combinată. 1. Adresare directă cu referire la registru S-a arătat că toate procesoarele moderne conţin un număr de registre generale cu acces foarte rapid a căror reuniune formează memoria locală. În aceste registre se introduc datele curente pentru prelucrare. Întrucât numărul registrelor este mic, şi adresa de registru este mică (mare avantaj). Pe de altă parte şi accesul la date este mult mai rapid întrucât nu se declanşează un ciclu de citire a memoriei. Citirea registrelor din memora locală se face foarte rapid, căci acestea sunt componente ale CPU.

2. Adresare cu referire la memorie

Adresare directă cu referire la registru

Page 7: Adresarea memoriei EUGEN - cs.ucv.ro · 3 OPCODE ADRESĂ n l L In câmpul de adresa apar acele elemente constitutive ale adresei logice din care prin efectuarea anumitor calcule se

7

În acest caz operandul (data) se află în memoria principală, în zona de date. Adresarea memoriei principale se face prin intermediul registrului MAR (registrul de adresare a memoriei). Dacă memoria are 2n locaţii atunci câmpul de adresă trebuie să aibă n biţi. Întrucât memoriile contemporane devin tot mai mari, rezultă că numărul de ranguri folosite pentru adresare creşte, deci instrucţiunile cu adresare la memorie, necesită un număr mare de biţi (lungime mare).

Execuţia unei astfel de instrucţiuni, presupune transferul din câmpul de adresă, al adresei logice, în registrul MAR, declanşarea unui ciclu de citire a memoriei şi extragerea din locaţia adresată a operandului. În cazul microcalculatoarelor pe 8 biţi o astfel de instrucţiune este dispusă pe 3 octeţi:

• primul octet reprezintă OPCODE; • al doilea octet reprezintă jumătatea inferioară a adresei; • al treilea octet reprezintă jumătatea superioară a adresei.

ROM

……… ………

OPCODE ADR INF ADR SUP

……… ………

După citirea primului octet (opcode) unitatea de control decodifică instrucţiunea în urma căreia ştie că este o instrucţiune pe trei octeţi cu adresare directă la memorie. 3. Adresare cu referire la dispozitivele de intrare-ieşire S-a arătat că aceasta categorie de instrucţiuni este foarte diversificată şi ar trebui să conţină câmpurile:

OPECODE ID Adresă canal Adresă periferic

Adresare directă cu referire la memorie

Page 8: Adresarea memoriei EUGEN - cs.ucv.ro · 3 OPCODE ADRESĂ n l L In câmpul de adresa apar acele elemente constitutive ale adresei logice din care prin efectuarea anumitor calcule se

8

4. Adresare combinată De multe ori unul dintre operanzi se află în memorie, iar al doilea într-un registru general şi deci, instrucţiunea trebuie să conţină adresele celor doi operanzi. Rezultă că este o combinaţie a cazurilor 1 şi 2. Dacă ar fi o instrucţiune cu 2 adrese în care ambii operanzi se afla în memorie, s-ar obţine o instrucţiune foarte lungă (neconvenabilă). V. Adresare paginată Adresarea paginată este o variantă de adresare directă. A apărut din necesitatea de a scurta lungimea instrucţiunilor. S-a arătat ca în cazul adresării memoriei, câmpul de adresă este lung (cu cât volumul memoriei este mai mare cu atât şi câmpul de adresă este mai lung). S-au căutat metode prin care să se poată scurta lungimea câmpului de adresă. O variantă eficientă constă în divizarea întregului spaţiu de memorie în pagini de memorie. Această divizare este conceptuală şi ajută la simplificarea adresării memoriei. Fiecare pagină are un număr fix de locaţii, iar numărul de pagini este dependent de volumul global al memoriei şi de mărimea unei pagini. Mărimea unei pagini este corelată cu lungimea câmpului de adresa din instrucţiune. În cazul în care câmpul de adresă al instrucţiunii are K biţi atunci se recomandă ca mărimea unei pagini să fie 2k locaţii.

Organizarea paginată a memoriei este utilizată şi la memorii virtuale. Paginile pot fi plasate la adrese fixe în cazul paginii fixe sau la adrese mobile în cazul paginii dinamice. Exemplu: se consideră o instrucţiune la care câmpul de adresa are 8 biţi. Atunci o pagină va conţine 256 locaţii. 1. Adresare directă la pagină zero Se utilizează câmpul de adresă pe 8 biţi (in general k biţi) al instrucţiunii pentru adresarea celor 256 de locaţii numai din pagina zero. Locaţia selectată este citită şi operandul transferat în ALU.

Exemplu de organizare paginată a memorie

Page 9: Adresarea memoriei EUGEN - cs.ucv.ro · 3 OPCODE ADRESĂ n l L In câmpul de adresa apar acele elemente constitutive ale adresei logice din care prin efectuarea anumitor calcule se

9

Avantajul adresării la pagină zero este lungimea mică a instrucţiunii. În loc să se folosească 16 biţi pentru adresă (în general numărul n de biţi) pentru adresa se folosesc numai 8 biţi (în general k biţi unde n > k).

Dezavantajul îl reprezintă accesul numai în pagina zero, neexistând posibilităţi de acces la alte pagini. 2. Adresare la pagină curentă Pentru a înlătura neajunsurile semnalate la metoda anterioară în vederea posibilităţii de adresare a tuturor paginilor se utilizează un mecanism combinat care îmbină o componentă din instrucţiune şi anume adresa logică cu o componentă dintr-un registru al CPU şi anume din PC. Se presupune că adresa este formată din n biţi pentru o adresa un volum de 2n locaţii. Atunci memoria este organizata în pagini de 2k locaţii, existând 2n-k pagini. Partea mai puţin semnificativă a adresei formată din k biţi permite adresarea la o locaţie din cadrul unei pagini, iar partea mai semnificativă care conţine n-k biţi asigură determinarea paginii. Atunci n-k biţi se preiau din cei mai semnificativi n-k biţi ai PC. Combinarea celor 2 elemente se face prin concatenare. Adresa astfel constituită se depune în registrul MAR, care este de n biţi asigurându-se citirea locaţiei dorite (o anumită pagină, o anumită locaţie).

Adresare directă la pagină zero

Page 10: Adresarea memoriei EUGEN - cs.ucv.ro · 3 OPCODE ADRESĂ n l L In câmpul de adresa apar acele elemente constitutive ale adresei logice din care prin efectuarea anumitor calcule se

10

Din modul de formare al adresei pentru dată rezultă că datele cerute de o anumita instrucţiune trebuie să fie în vecinătatea instrucţiunii. Aceasta vecinătate se materializează în conservarea aceleiaşi pagini. Deci, la scrierea programului în cazul folosirii acestei tehnici de adresare, programatorul va plasa datele în aceeaşi pagină a memoriei, căci adresa de pagină se preia din numărătorul de program. Când se executa instrucţiunea curenta PC are o anumita valoare din care cei mai semnificativi (n-k) biţi sunt preluaţi şi pentru formarea adresei pentru pagina în care se afla operandul. Pot rezulta situaţii critice la frontiera între pagini. Se ştie că după fetch instrucţiune se dă comanda de incrementare a PC. Dacă întâmplător instrucţiunea curentă s-a aflat la adresa 01FF (k=2, n - k = 2), atunci după incrementare 01FF + 1 = 0200 şi deci adresa de pagină nu mai este 01, ci 02. 3. Adresare paginată relativă Noţiunea de pagină curentă expusă anterior este înlocuită în acest caz cu noţiunea de pagină relativă. Pagina relativă este dinamică în spaţiul memoriei. Se numeşte relativă pentru că este centrată în jurul valorii curente a PC. Rezultă că în aceasta tehnică de adresare intervine PC-ul cu toate rangurile sale. În instrucţiune apare o componenta a adresei (adresa logică) care se numeşte deplasament. Deplasamentul reprezintă cu cât se face deplasarea în raport cu valoarea curentă a PC-ului. Deplasamentul poate fi un număr binar pozitiv sau un număr binar cu semn. Adresa efectivă se determină prin însumarea conţinutului PC-ului cu deplasamentul, iar rezultatul se înscrie în MAR. Dacă deplasamentul este pozitiv atunci pagina relativă are ca bază adresa din PC, iar vârful la valoarea PC + Dmax, unde Dmax valoarea maxima a deplasamentului. Dacă deplasamentul este număr binar cu semn atunci pagina relativă este centrată în jurul locaţiei cu adresa data de PC.

Adresare la pagină curentă

(J+1)*2k-1

Page 11: Adresarea memoriei EUGEN - cs.ucv.ro · 3 OPCODE ADRESĂ n l L In câmpul de adresa apar acele elemente constitutive ale adresei logice din care prin efectuarea anumitor calcule se

11

PC-ul are n ranguri, iar deplasamentul conţinut de instrucţiune are k ranguri (k<n); suma se face pe n ranguri.

Exemplu: Se consideră o instrucţiune care s-a adus în RI (registru de instrucţiune) care are un OPCODE, un identificator, şi un deplasament = 2A, adresa este scrisă în cifre hexa, PC = 1A00. Se face suma între PC şi deplasament rezultând adresa efectiva. VI. Adresarea bazată Este asemănătoare ca mecanism, cu adresarea paginată relativă numai că în locul PC-ului, s-a folosit conţinutul unui alt registru sau al mai multor registre numite registre de bază, care fac parte din grupul registrelor generale din procesor.

Tipuri de pagini

Adresare la pagină relativă

Page 12: Adresarea memoriei EUGEN - cs.ucv.ro · 3 OPCODE ADRESĂ n l L In câmpul de adresa apar acele elemente constitutive ale adresei logice din care prin efectuarea anumitor calcule se

12

În acest fel se elimină dependenţa între poziţia datei şi a programului. Registrul de bază are o lungime egală cu cea a registrului MAR, iar în instrucţiune la câmpul de adresă apare deplasamentul care poate fi un număr binar pozitiv sau un număr binar cu semn. Lungimea deplasamentului este mai mică decât cea a registrului MAR. Valoarea deplasamentului precizează lărgimea ferestrei, deci cu cât numărul de ranguri din câmpul de adresă este mai mare, cu atât se defineşte o fereastră mai largă sau o pagină mai mare. Calculul adresei efective se face prin însumarea conţinutului registrului de bază cu cel al deplasamentului. Cum de regulă există mai multe registre de bază, în instrucţiune va trebui să apară un câmp special desemnator al registrului de bază desemnat câmpul B. Dacă de exemplu există 8 registre de bază numerotate 0 ... 7, atunci câmpul B va avea lăţimea 3. La unele arhitecturi de calculatoare se adoptă convenţia că dacă câmpul B = 0 atunci adresa efectiva va fi dată numai de deplasament.

Adresare bazată

Page 13: Adresarea memoriei EUGEN - cs.ucv.ro · 3 OPCODE ADRESĂ n l L In câmpul de adresa apar acele elemente constitutive ale adresei logice din care prin efectuarea anumitor calcule se

13

Încărcarea unor valori iniţiale în registrul de baza ca şi modificarea acestora pe parcursul execuţiei programului se face prin mijloace software. Definiţie: Această tehnică de adresare se numeşte adresare prin bază şi deplasament. Conţinutul registrului de baza desemnat conţine fie centrul paginii în care se află data, fie începutul paginii în care se află data. Cum se pot utiliza mai multe registre de bază rezultă că se definesc simultan mai multe pagini curente pentru date. La definirea acestor pagini se vor evita suprapunerile de adresă.

VII. Adresarea indexată Adresarea indexată este o variantă de adresare bazată. La aceasta, registrele de bază sunt înlocuite de registrele de indexare. Aceste registre fac parte din grupul registrelor generale a unui procesor. Mecanismul de calcul al adresei efective este asemănător cu cel de la adresarea bazată: se face suma între conţinutul registrelor de indexare şi adresa logică din instrucţiune. Definiţie. Conţinutul registrului de indexare se numeşte index. Particularitatea registrelor de indexare constă în posibilitatea de a efectua o serie de operaţii directe asupra acestora ca de exemplu: incrementare, decrementare, încărcare paralela, adunare, scădere. Registrele de indexare sunt frecvent folosite în programare în special pentru definirea ciclurilor. Se pot defini simultan mai mulţi indexi, permitandu-se astfel declararea mai multor cicluri deci, ciclurile încuibate. In câmpul X se introduce adresa registrului de indexare. Daca sunt s ranguri atunci pot sa existe 2s registre de indexare. In câmpul ID (identificare) apar combinaţii care identifică o anumită tehnică de adresare.

Page 14: Adresarea memoriei EUGEN - cs.ucv.ro · 3 OPCODE ADRESĂ n l L In câmpul de adresa apar acele elemente constitutive ale adresei logice din care prin efectuarea anumitor calcule se

14

Exemplu de utilizarea adresării indexate: Se cere transferul unui bloc de date cu K componente din zona adreselor M1 ... Mk în zona R1...Rk. In mod normal ar trebui scrise k instrucţiuni de transfer de tipul MOV. Programarea se poate simplifica daca se foloseşte adresarea indexata. In instrucţiune în câmpul de adresa apar constantele R1 şi M1, iar asupra registrului de indexare se pot efectua operaţii de incrementare. In registrul de indexare Rx se introduce mărimea K. Asupra lui Rx se pot efectua decrementări. Atunci când valoarea indexului devine zero procesul transferării blocului de date s-a încheiat şi deci se opreşte execuţia transferului.

Adresare indexată

Page 15: Adresarea memoriei EUGEN - cs.ucv.ro · 3 OPCODE ADRESĂ n l L In câmpul de adresa apar acele elemente constitutive ale adresei logice din care prin efectuarea anumitor calcule se

15

VIII. Adresarea indirectă Adresarea indirectă este o tehnică de adresare modernă care permite scurtarea lungimii programelor şi introduce o flexibilitate în scrierea programelor complexe. La adresarea indirecta adresa logică din instrucţiune nu reprezintă adresa efectiva a operandului ci a unui noi instrucţiuni. Deci, se va citi locaţia din memorie de la adresa specificata în instrucţiune, iar data citită va fi interpretată ca o noua instrucţiune.

În cazul microcalculatoarelor adresările indirecte se aplică frecvent sub forma adresării implicite prin intermediul unor registre generale din CPU. Astfel la microprocesorul INTEL I8080 perechea registrului HL, fiecare de 8 biţi, este folosită ca adresă logică pentru accesarea memoriei operative de unde se extrage operandul. Fie de exemplu instrucţiunea ADD M (care presupune adunarea dintre ACC şi conţinutul locaţiei de memorie a cărei adresa este specificată implicit prin conţinutul perechii de registre HL.

ACC (ACC) + Mem ((H)(L)) IX. Adresare pentru un bloc de date S-a arătat că un calculator operează şi cu câmpuri de lungime variabilă (blocuri de date). Pentru adresarea acestora se pot folosi variantele: 1. Se dă adresa de început şi adresa de sfârşit de bloc; 2. Se dă adresa de început şi lungimea câmpului; 3. Se da adresa de început şi se foloseşte un delimitator de bloc adică o combinaţie particulara de

biţi care este folosită doar pentru identificarea sfârşitului blocului. Această metodă nu se recomandă pentru că se foloseşte o parte din memoria pentru memorarea delimitatorului.

Adresare indirectă

Page 16: Adresarea memoriei EUGEN - cs.ucv.ro · 3 OPCODE ADRESĂ n l L In câmpul de adresa apar acele elemente constitutive ale adresei logice din care prin efectuarea anumitor calcule se

16

X. Tehnici de adresare combinate Majoritatea calculatoarelor şi microcalculatoarelor folosesc diverse combinaţii ale tehnicilor de adresare prezentate anterior pentru a valorifica avantajele fiecăruia. 1. Adresare indirectă multinivel. Adresarea indirectă este efectuată în mai multe cicluri de fiecare

data informaţia extrasa din memorie nu este un operand ci o nouă instrucţiune; excepţie face ultima citire. De regula există o limită de nivele pentru adresare indirectă. De exemplu la funcţia FELIX C numărul ciclurilor permise de adresare indirecta = 5.

2. Adresare indirectă şi indexată. Conform denumirii această tehnică de adresare îmbină cele două tehnici de adresare deja explicate. Dar, la aceasta tehnică combinată se pune problema momentului în care se face indexarea. Distingem 2 cazuri: cu post-indexare şi cu pre-indexare. In primul caz mai întâi se rezolvă sistemul de adresare indirecta (care poate fi şi multinivel) şi în final se aduna valoarea indexului (din registrul de indexare specificat în instrucţiune) rezultând adresa efectivă a operandului. In cazul 2 mai întâi se aplică mecanismul folosit la adresarea indexată adică se adună adresa logică cu conţinutul registrului de indexare rezultând adresa unde se află pointerul. Se extrage pointerul, se face o noua adresare, se extrage operandul.

3. Adresare bazata cu indexare. Mecanismul de calcul al adresei efective este următorul:

Adresare bazat-indexată (bazată cu indexare)