arhitectura setului de instrucţiuni specifică arhitectura ...vega.unitbv.ro/~romanca/carte-mpmc...

13
ARHITECTURA SETULUI DE INSTRUCŢIUNI INTRODUCERE 2 INTRODUCERE ÎN ARHITECTURA SETULUI DE INSTRUCŢIUNI (ISA) Arhitectura setului de instrucţiuni specifică unui procesor cuprinde: – setul de instrucţiuni (instrucţiuni specifice la nivel maşină) recunoscute de procesor, – tipurile de date care pot fi manipulate cu aceste instrucţiuni şi – contextul în care aceste instrucţiuni operează 3 INTERFAŢĂ ÎNTRE HARDWARE ŞI SOFTWARE ISA este o componentă a maşinii de calcul, vizibilă programatorului la nivel de limbaj de asamblare, componentă care realizează interfaţa între software şi hardware Program în C compilat în program ISA Program în ASM Program în C Program în ASM asamblat în program ISA Nivel ISA Software Hardware Program ISA executat de microprogram sau de hardware Hardware 4 CLASIFICARE SETURI DE INSTRUCŢIUNI • Numărul de adrese de operanzi pe instrucţiune Locul de stocare a operanzilor pentru instrucţiunile executate de UCP Tipul operaţiilor efectuate de setul de instrucţiuni Tipul datelor prelucrate de unităţile aritmetice şi logice

Upload: others

Post on 05-Nov-2019

7 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Arhitectura setului de instrucţiuni specifică ARHITECTURA ...vega.unitbv.ro/~romanca/Carte-MpMc 2015/Calc/arhiva/3-4-ISA.pdfimpune ca fiecare instrucţiune din ISA să poată opera

ARHITECTURA SETULUI DE INSTRUCŢIUNI

INTRODUCERE

2

INTRODUCERE ÎN ARHITECTURA SETULUI DE INSTRUCŢIUNI (ISA)

• Arhitectura setului de instrucţiuni specifică unui procesor cuprinde:– setul de instrucţiuni (instrucţiuni specifice la

nivel maşină) recunoscute de procesor,– tipurile de date care pot fi manipulate cu

aceste instrucţiuni şi– contextul în care aceste instrucţiuni operează

3

INTERFAŢĂ ÎNTRE HARDWARE ŞI SOFTWARE

• ISA este o componentă a maşinii de calcul, vizibilă programatorului la nivel de limbaj de asamblare, componentă care realizează interfaţa între software şi hardware

Program în C compilatîn program ISA

Program în ASMProgram în C

Program în ASM asamblat înprogram ISA

Nivel ISASoftware

HardwareProgram ISA executat de microprogram sau de hardware

Hardware

4

CLASIFICARE SETURI DE INSTRUCŢIUNI

• Numărul de adrese de operanzi pe instrucţiune• Locul de stocare a operanzilor pentru

instrucţiunile executate de UCP• Tipul operaţiilor efectuate de setul de instrucţiuni• Tipul datelor prelucrate de unităţile aritmetice şi

logice

Page 2: Arhitectura setului de instrucţiuni specifică ARHITECTURA ...vega.unitbv.ro/~romanca/Carte-MpMc 2015/Calc/arhiva/3-4-ISA.pdfimpune ca fiecare instrucţiune din ISA să poată opera

5

CARACTERISTICI ALE SETULUI DE INSTRUCŢIUNI

• regularitate (ortogonalitate) - această caracteristică impune ca fiecare instrucţiune din ISA să poată opera cu orice tip de date, conţinute în oricare registru sau oricare locaţie de memorie, şi să poată fi adresate prin oricare mod de adresare.

• completitudine - această cerinţă ar impune ca setul de instrucţiuni să cuprindă tot setul de operatori disponibili într-un limbaj– Cenzură pentru operatorii cu frecvenţă scăzută de apariţie în

programe, în avantajul operatorilor cu frecvenţă ridicată

6

FORMATUL INSTRUCŢIUNILOR• Lungime:

– arhitecturi la care lungimeainstrucţiunilor este fixă, pentru tot setul recunoscut

– arhitecturi cu lungime variabilă a instrucţiunilor recunoscute

7

Format general instrucţiuni

Op-Code OP1 OP2 OP3

• Instrucţiunile se reprezintă în memoria principală ca octeţi succesivi (unul sau mai mulţi octeţi în funcţie de tipul de procesor)

•Scopul fiecărei instrucţiuni recunoscute de procesor este să specifice:

•operaţia ce trebuie executată de hardware

•operanzii utilizaţi şi

•locul unde se stochează rezultatul operaţiei.

8

Convenţii de stocare şi adresare informaţie în MP

• După modul în care se stochează în memoria principală informaţiile multi-octet există două convenţii:– Little Endian– Big Endian

Little Indian

Big Indian

Page 3: Arhitectura setului de instrucţiuni specifică ARHITECTURA ...vega.unitbv.ro/~romanca/Carte-MpMc 2015/Calc/arhiva/3-4-ISA.pdfimpune ca fiecare instrucţiune din ISA să poată opera

9

Convenţii de stocare şi adresare informaţie în MP

• După modul în care se stochează în memoria principală informaţiile multi-octet există două convenţii:– Little Endian– Big Endian

Big Indian File (Şir Indian):

The big one is the first

Little Indian File (Şir Indian):The little one is the first

10

Convenţii de stocare şi adresare informaţie în MP

• Convenţia "Little Endian" (aluzie la şirul indian care are în faţă pe cel mai mic) plasează întotdeauna pe prima poziţie, la adresa cea mai mică, octetul (byte) cel mai puţin semnificativ al unei adrese multi –octet

• Stocarea în memorie se face în ordine, de la octetul cel mai puţin semnificativ (adresa mică), către octetul cel mai semnificativ stocat la adresa cea mai mare

• Adresarea informaţiei multi-octet se face prin lansarea adresei celui mai puţin semnificativ octet

• Exemplu de stocare în memorie, în convenţia "LittleEndian", a unui cuvânt de 32 biţi. Valorile numerice au fost scrise în hexazecimal

Adresăde

memorie

A:

A+1:

A+2:

A+3:

01

5C

04

3F

3F045C01

Data stocatã începândde la adresa "A" este:

Memoriaprincipalã

Cel mai puţin semnificativ octet

Cel mai semnificativ

octet

11

Convenţii de stocare şi adresare informaţie în MP

• Convenţia “Big Endian" plasează întotdeauna pe prima poziţie, la adresa cea mai mică, octetul cel mai semnificativ al unei adrese multi – octet

• Stocarea în memorie se face în ordine, de la octetul cel mai semnificativ (adresa mică), către octetul cel mai puţin semnificativ stocat la adresa cea mai mare.

• Adresarea informaţiei multi-octet se face prin lansarea adresei celui mai semnificativ octet (MSByte)

12

ALINIEREA INFORMAŢIEI ÎN MEMORIE

• Legat de convenţia de stocare în memorie a informaţiilor (instrucţiuni, date, adrese) trebuie menţionat aici că la unele microprocesoareaccesul la obiecte mai mari decât un octet se poate face doar dacă informaţia este aliniată

• Alinierea se referă la faptul că accesul la un obiect de dimensiunea Docteţi se face prin specificarea adresei A a primului octet ocupat, unde adresa A respectă ecuaţia:

A modulo D = 0• De exemplu, pentru D=4 octeţi

Adresa 0: 0 modulo 4 = 0Adresa 1: 1 modulo 4 = 1Adresa 2: 2 modulo 4 = 2Adresa 3: 3 modulo 4 = 3Adresa 4: 4 modulo 4 = 0Adresa 5: 5 modulo 4 = 1

Page 4: Arhitectura setului de instrucţiuni specifică ARHITECTURA ...vega.unitbv.ro/~romanca/Carte-MpMc 2015/Calc/arhiva/3-4-ISA.pdfimpune ca fiecare instrucţiune din ISA să poată opera

13

Cuvânt de 4 octeţi stocat în convenţia little endian

Data Bus

328 8 8 8 8 8 8 8Adresă

(în Hex)

00

0408

0C

10

14

18

Cuvânt de 4 octeţi aliniat la adresa 08

hex.

4 octeţiAdresă

(în Hex)00

04

08

0C

10

14

18

Cuvânt de 4 octeţi ne-aliniat. Stocat la adresele 0A, 0B,

0C şi 0D

4 octeţi

14

INTERDEPENDENŢA SET DE INSTRUCŢIUNI -ORGANIZARE INTERNĂ A PROCESORULUI

• Număr de câmpuri de adresă

OPCODE ADR 1 ADR 2 ADR 3

OPCODE ADR 1 ADR 2

OPCODE ADRESĂ

OPCODE Instrucţiune cu zero adrese

Instrucţiune cu o adresă

Instrucţiune cu două adrese

Instrucţiune cu trei adrese

15

Număr de adrese explicite: Exemplu

; adună primele două articole din vârful stivei; şi stochează rezultatul în noul vârf al stiveiadd0

; Ac ← Ac+xadd x1

;x ←x+y sau Ac ← x+y add x,y2

; z ← x+y sau y ← z + xadd z,x,y3

ComentariuFormat instrucţiune

Număr adrese

16

Clasificare• Conform legăturii dintre organizarea UCP şi numărul de

adrese pe instrucţiune, vom putea încadra cele mai multe procesoare într-una din următoarele trei categorii:– organizare pe bază de registru acumulator (Ac) la care pentru

majoritatea operaţiilor unul dintre operanzi se găseşte implicit în acumulator. De asemenea rezultatul operaţiei se “acumulează” în acest registru cu funcţie specială.

– organizare pe bază de registre de utilizare generala (RG). La acest tip de organizare operanzii sunt explicit localizaţi fie în registrele interne (fără restricţii), fie în registrele din locaţiile memoriei principale.

– organizare de tip stivă (ST) la care operanzii se găsesc implicit în vârful stivei şi tot aici se stochează rezultatul. Există unele procesoare de tip stivă care folosesc două stive: una pentru operaţii asupra datelor şi alta pentru operaţii asupra adreselor.

Page 5: Arhitectura setului de instrucţiuni specifică ARHITECTURA ...vega.unitbv.ro/~romanca/Carte-MpMc 2015/Calc/arhiva/3-4-ISA.pdfimpune ca fiecare instrucţiune din ISA să poată opera

17

Exemplu de instrucţiuni

;VS ← @x

;aduce primele 2 articole din stivă, le adună şi ; stochează rezultatul în stivă

push x

addST

; r1 ← r2 + r3

; r1 ← r1 + r2 sau r2 ← r1 + r2

; r1 ← r2 sau invers

; r1 ← r1 + @x

add r1,r2,r3add r1,r2mov r1,r2add r1,x

RG

;Ac ← Ac + x sau Ac ← Ac + @xadd xAC

ComentariuFormat instrucţiune

Tip organizare

18

Avantaje şi dezavantaje• AC: instrucţiuni scurte,

densitate relativ mare a codului stocat în memorie

• AC: acumulatorul este un puternic factor de limitare al vitezei de lucru al procesorului.

• RG: uşurinţa generării codului de către programe compilatoare

• SP: evaluare uşoară a operaţiilor pe baza notaţiei inverse (notaţia “poloneză”), instrucţiuni cu lungime foarte redusă

• RG: lungimea instrucţiunilor este relativ mare (adresare fiecare registru)

• SP: dificil de adresat în mod aleator, codul rezultat este relativ ineficient, limitare în viteză

• x = a* ( b + c ) scris abc+*• x = (a+b)*(c+d) scris ab+cd+*• x = (a+b)*(c+d)*(e+f) scris ab+cd+ef+**

19

Comparaţie RISC / CISC• Acces la memorie limitat, load / store• Format de lungime fixă pentru

instrucţiuni• Unitate de control simplă

implementată sub formă cablată• Relativ puţine tipuri de instrucţiuni şi

puţine moduri de adresare• Execuţia instrucţiunilor într-un singur

ciclu prin tehnici pipeline eficiente• Un număr relativ mare de registre în

interiorul UCP;• Utilizarea compilatoarelor

optimizatoare - pentru a optimiza performanţele codului obiect.

• Instrucţiuni cu operanzi în memorie• Format de lungime variabilă pentru

instrucţiuni;• Unitate de control microprogramată

(micro-codată) flexibilă• Set complex (extins) de instrucţiuni şi

multe moduri de adresare;• Implementează tehnici pipeline

• Un număr relativ mic de registre în interiorul UCP.

• Exista instrucţiuni complexe de mare eficienţă, dar uneori acestea sunt rar utilizate de către compilatoare.

- TIPURI DE INSTRUCŢIUNI- MODURI DE ADRESARE

ARHITECTURA SETULUI DE INSTRUCŢIUNI

Page 6: Arhitectura setului de instrucţiuni specifică ARHITECTURA ...vega.unitbv.ro/~romanca/Carte-MpMc 2015/Calc/arhiva/3-4-ISA.pdfimpune ca fiecare instrucţiune din ISA să poată opera

21

CLASIFICARE

• Instrucţiuni aritmetice• Instrucţiuni logice• Instrucţiuni pentru transferul informaţiei• Instrucţiuni pentru deplasarea şi rotirea

datelor• Instrucţiuni de ramificare (pentru controlul

secvenţei de program)• Instrucţiuni pentru controlul procesorului• Instrucţiuni pentru lucrul cu şiruri

22

1. Instrucţiuni aritmetice

• Asigură operaţiile aritmetice asupra operanzilor. Afectează indicatorii de condiţii. Un set tipic de instrucţiuni aritmetice este rezumat în continuare (exemple pentru Intel 80x86):– Adunare ADD D,S– Adunare cu considerarea transportului ADC D,S– Scădere SUB D,S– Scădere cu considerarea împrumutului SBB D,S– Incrementare INC D– Decrementare DEC D– Realizare cod complementar (C2) NEG D– Comparare CMP D,S

23

1. Instrucţiuni aritmetice

– Înmulţire (fără semn) MUL S – Înmulţire (cu semn) IMUL S– Împărţire (fără semn) DIV S – Împărţire (cu semn) IDIV S– Ajustare zecimală DAA (După adunare în NBCD)

DAS (După scădere în NBCD)

• Notă: deîmpărţitul sau deînmulţitul se găsesc implicit în registrele acumulator şi eventual DX. Din această cauză la I8086 există un singur operand. La procesoare Intel pe 32 de biţi (de la I80386), operaţia de înmulţire cu semn a întregilor poate avea şi forma cu doi sau trei operanzi, caz în care se pot folosi şi alte registre generale, decât AX şi DX.

24

2. Instrucţiuni logice

• Asigură operaţiile logice cu operanzii specificaţi. Afectează indicatorii de condiţii. Un set tipic este rezumat în continuare(exemple pentru Intel 80x86):

• ŞI logic AND D,S• SAU logic OR D,S• SAU-Exclusiv XOR D,S• Complement (NU) NOT D• Test logic TEST D,S • Prelucrare şi testare pe bit (de la Intel 386 in sus, la

microcontrollere)

Page 7: Arhitectura setului de instrucţiuni specifică ARHITECTURA ...vega.unitbv.ro/~romanca/Carte-MpMc 2015/Calc/arhiva/3-4-ISA.pdfimpune ca fiecare instrucţiune din ISA să poată opera

25

3. Instrucţiuni pentru transferul informaţiei

• Realizează transferul (copierea) informaţiei între registre, între registre şi memorie, sau între registre şi porturi de I/O (din sursă în destinaţie)

• Aceste instrucţiuni nu afectează de obicei valorile indicatorilor de condiţii.

• Pot fi clasificate in:– Instrucţiuni de transfer de uz general– Instrucţiuni de transfer cu stiva– Instrucţiuni pentru transferul adreselor (pointeri)– Instrucţiuni de transfer I/O.

• Pentru microprocesoarele care au porturile de I/O mapate în spaţiul de adrese de memorie nu există instrucţiuni specializate de transfer de I/O

26

3. Instrucţiuni pentru transferul informaţiei (exemple I8086)

• transfer de uz general MOV D,S ;D←SXCHG D,S ;D↔S

• transfer cu stiva PUSH S / POP DPUSHF / POPF

• transferul adreselor LEA r16,adr ;(r16)←adLDS r16,adr ;r16Low ← [DS:adr]

;r16High ←[DS:(adr+1)];DSLow ← [DS:(adr+2)];DSHigh ← [DS:(adr+3)]

• transfer de I/O IN AL,adr ; AL ← adr (port)IN AX,adr ; AL ← adr (port), 16 biţiIN AL,DX ; AL ← (DX)OUT adr,ALOUT DX,AL

27

Instrucţiuni pentru deplasarea şi rotirea datelor

• Instrucţiunile propriu-zise de deplasare pot fi asociate – instrucţiunilor logice, în cazul în care deplasarea se efectuează

în scopul izolării unor biţi dintr-un cuvânt (pentru a testa sau prelucra acei biţi), sau

– instrucţiunilor aritmetice (înmulţire / împărţire cu puteri ale lui 2). În cazul deplasărilor aritmetice se conservă bitul de semn al operandului deplasat.

• Operaţiile de deplasare pot fi:– deplasări închise (rotaţii stânga / dreapta)– deplasări deschise (stânga / dreapta)

• La toate operaţiile de deplasare, se influenţează şi valoarea indicatorului de transport (Carry)

• Deplasările închise (rotirile) sunt doar de tip logic.

28

Instrucţiuni pentru deplasarea şi rotirea datelor (Intel 8086)

• SAL D,1• SHL D,1

CF

0

D

Page 8: Arhitectura setului de instrucţiuni specifică ARHITECTURA ...vega.unitbv.ro/~romanca/Carte-MpMc 2015/Calc/arhiva/3-4-ISA.pdfimpune ca fiecare instrucţiune din ISA să poată opera

29

Instrucţiuni pentru deplasarea şi rotirea datelor (Intel 8086)

• ROL D,1

• RCL D,1

CF

D

CF

D

30

Instrucţiuni pentru deplasarea şi rotirea datelor (Intel 8086)

• SAR D,1

• SHR D,1

D

CF

Semn

D

0

CF

31

Instrucţiuni pentru deplasarea şi rotirea datelor (Intel 8086)

• ROR D,1

• RCR D,1

CF

D

CF

D

32

Instrucţiuni de ramificare (pentru controlul secvenţei de program)

• Determină modificarea secvenţei normale, liniare, de execuţie a unui program, în funcţie de condiţiile în care s-a terminat execuţia unei instrucţiuni precedente

• Se asigură astfel ramificaţiile în program şi implementarea diferitelor structuri de control specificate de un anumit algoritm.

• Aceste instrucţiuni nu afectează starea indicatorilor de condiţii, dar unele din instrucţiunile de salt sunt influenţate de valoarea conţinuta în indicatori.

• Instrucţiunile de ramificare (salt) pot fi:– Necondiţionate (apel de procedură (CALL op), salturi absolute (JMP

op), revenire din procedură / return (RET))– Condiţionate (Jcc - Jump if condition = TRUE), apeluri condiţionale

de proceduri (CALL if condition = TRUE) sau “repetă până când condition = TRUE”)

• Exemplificări pentru I8086: JMP op, CALL op, RET, Jcc op

Page 9: Arhitectura setului de instrucţiuni specifică ARHITECTURA ...vega.unitbv.ro/~romanca/Carte-MpMc 2015/Calc/arhiva/3-4-ISA.pdfimpune ca fiecare instrucţiune din ISA să poată opera

33

Instrucţiuni de ramificare (exemplificare I8086)

• Mnemonicele folosesc: Above, Below, Equal, Not, Greater, Less, Carry, Zero, Overflow, Parity (PEven, POdd), Sign (semn)

• Tabel pentru testarea condiţiei din prima coloană, la scăderea a două numere A - B.

34

Instrucţiuni pentru controlul procesorului

• Controlează anumite funcţii ale procesorului, ce acţionează fie prin intermediul unor indicatori de control (sau registre de control), fie prin introducerea unor stări sau semnale necesare pentru sincronizarea cu evenimentele externe.

• CMC• CLC• STC• NOP• CLD• STD

• CLI• STI• HLT• WAIT• ESC• LOCK

35

MODURI DE ADRESARE

• Se referă la modul în care în formatul instrucţiunii se specifică adresa unui operand de prelucrat, adresa de stocare a rezultatului operaţiei, sau adresa următoarei instrucţiuni

• Operanzii:– imediaţi– în registre interne UCP– în memorie– în registre port de I/O

36

MODURI DE ADRESARE

• În cazul unui program executabil, valoarea operanzilor este calculată:– în momentul compilării / asamblării programului sursă

pentru operanzii imediaţi– în momentul încărcării în memoria principală pentru

adresarea directă la memorie şi– în momentul execuţiei pentru operanzii adresaţi în registre

sau adresaţi indirect.

Page 10: Arhitectura setului de instrucţiuni specifică ARHITECTURA ...vega.unitbv.ro/~romanca/Carte-MpMc 2015/Calc/arhiva/3-4-ISA.pdfimpune ca fiecare instrucţiune din ISA să poată opera

37

MODURI DE ADRESARE

• Pentru fiecare mod de adresare UC calculează o adresă efectivă(AE) a operandului

• La microprocesoarele cu memoria segmentată, AE rezultă ca un întreg fără semn ce reprezintă deplasamentul (adresa relativa a operandului) fata de începutul segmentului în care se află.

• Intel 8086 – memorie segmentată (registre segment CS, DS, SS, ES)

• Adresa fizică (AF) se obţine din adresa efectiva (AE) la care se adaugă adresa de segment (AS) înmulţită cu 16, ca în ecuaţia:

AEASAF +×= 42

38

MODURI DE ADRESARE

• Notaţii:– r - registru– d - deplasament– x - adresă de memorie– @x - adresa de la adresa x (pointer salvat la adresa

x)– @r - operandul este conţinutul locaţiei de memorie cu

adresa conţinuta în registrul r

39

MODURI DE ADRESARE

• Clasificare moduri de adresare:– adresarea imediată– adresarea directă– adresarea indirectă– adresarea relativă– adresarea indexată

40

Adresare imediată

cod operaţie

data imediatã

Formatulinstrucţiunii

cod operaţie

data (low)

[data (high)]

stocare în memoriaprincipalã

adresã

a:

a+1:

a+2:

a+3:and al,0FFh

mov ax,3A40h

mov al,5

mov ax,5

Page 11: Arhitectura setului de instrucţiuni specifică ARHITECTURA ...vega.unitbv.ro/~romanca/Carte-MpMc 2015/Calc/arhiva/3-4-ISA.pdfimpune ca fiecare instrucţiune din ISA să poată opera

41

Adresare directă

• adresare directă la registru (adresare explicită sau implicită) , (AE = r)

• adresare directă la memorie (absolută sau extinsă)

(AE = x)

42

Adresare directă la memorie

cod operaţie

adresã low

adresã high

adresã

a:

a+1:

a+2:

a+3:

cod operaţie

adresã

Formatul instrucţiunii

AE operand

43

Adresare indirectă

• Adresare indirectă prin registru (AE = @r)– De exemplu, se poate scrie: mov ax,@bx

• Adresare indirectă prin memorie (AE = @x ).– De exemplu, se poate scrie: mov ax,@there

44

Adresare indirectă prin registru

cod operaţie

adresã registru(intern sauextern UCP)

Formatul instrucţiunii

adresã operand

registru de adresare

operand

Memorieprincipalã (RAM)

Page 12: Arhitectura setului de instrucţiuni specifică ARHITECTURA ...vega.unitbv.ro/~romanca/Carte-MpMc 2015/Calc/arhiva/3-4-ISA.pdfimpune ca fiecare instrucţiune din ISA să poată opera

45

Adresare indirectă - variante

a. indirectă prin registru cu auto-post-incrementaremov r1,@r2+

b. indirectă prin registru cu auto-post-decrementaremov r1,@r2−

c. indirectă prin registru cu auto-pre-incrementaremov r1,+@r2

d. indirectă prin registru cu auto-pre-decrementaremov r1,−@r2

46

Adresare indirectă la stivă(prin SP)

• Operaţia de scriere în stivă ("push sursa") poate fi scrisă

mov −@SP,sursaSP← SP – N@SP← sursa

• Operaţia de extragere din stivă ("pop dest") într-un registru destinaţie poate fi scrisă

mov dest,@SP+dest ← @SPSP ← SP + N

47

Adresare indirectă a instrucţiunilor(prin PC – adresare secvenţială)

• La execuţia de secvenţe succesive de instrucţiuni din memorie - adresare indirectă prin registrul PC cu auto-post-incrementare.

AE = @PC+

48

Adresare relativă

• Corpul instrucţiunii conţine un deplasament care este adunat la adresa de start a unei secţiuni de memorie, adresă conţinută într-un registru desemnat explicit sau implicit în instrucţiune.

• Putem deosebi următoarele variante de adresare relativă:• a) adresare relativă bazată (numită şi indirectă prin registru bază, cu

deplasare); AE = @(r + d)– De exemplu: mov ax,[bx+8]

• b) adresare relativa la contorul de program -PC; AE = @(PC + d)– De exemplu:

Eticheta1:mov dx,theremov ax,1732hmov bx,cxjmp *-9

Page 13: Arhitectura setului de instrucţiuni specifică ARHITECTURA ...vega.unitbv.ro/~romanca/Carte-MpMc 2015/Calc/arhiva/3-4-ISA.pdfimpune ca fiecare instrucţiune din ISA să poată opera

49

Adresare indexată

• Asemănătoare ca principiu, cu adresarea relativă bazată, dar spre deosebire de aceasta ea este folosită exclusiv la adresarea datelor

• Adresa datelor din memoria principală este modificată cu ajutorul conţinutului unui registru index

• Adresarea indexată se utilizează pentru a referi elementele unui vector, poziţia unui element din vector fiind determinată printr-un indice, iar indicele se poate modifica prin modificarea valorii conţinute în registrul index

• Numărul de registre index dintr-un procesor indică numărul de tablouri potenţiale care se pot adresa în memorie, iar mărimea deplasamentului determină dimensiunea maximă a tabloului. Numărul registrelor index este un criteriu de performanţă pentru microprocesoare.

50

Adresare indexată

• Indexarea se combină de obicei cu alte moduri de adresare putând exista variantele:– adresare indexată directă la memorie– adresare pre-indexată indirectă la registru– adresare post-indexată indirectă la registru– adresare pre-indexată indirectă la memorie– adresare post-indexată indirectă la memorie– adresare indexată relativă la adresa de bază (numită şi

adresare bazată şi indexată)

51

Adresare indexată

• Modurile combinate dintre indexare şi adresările indirecte pot specifica că indexarea se va realiza înainte sau dupăce indirectarea este efectuată

• Calcul adresă efectivă:AE = @(ri + d), sauAE = @(ri + x), sauAE = @(ri + r)

• I8086:• a) Adresare indexată-directă la memorie: mov ax,adr1[si]• b) Adresare indexată indirectă prin registru bază

(adresare bazată şi indexată): mov ax,[bp][si]