Sunteți pe pagina 1din 39

ARHITECTURA SISTEMELOR DE CALCUL

Curs 7

Cuprins

Exemplu de sistem de calcul cu 8086 (recapitulare) Programarea microprocesorului 8086


8086 principii arhitecturale 8086 resursele accesibile/vizibile programatorului (programmers view) Adresarea memoriei Segmentarea memoriei Moduri de adresare Codificarea instruciunilor Limbaj de asamblare
CTI.DID.207 Arhitectura sistemelor de calcul 2

Exemplu de sistem de calcul cu 8086

READY RESET CLK

READY RESET CLK CLK

13 linii

BHE

D07

D07

CTI.DID.207 Arhitectura sistemelor de calcul

D07

D07

8086 principii arhitecturale

Segmentarea memoriei

Suport pentru programarea modular utlizat pentru dezvoltarea programelor mari Aplicaie complex = procese multiple = module multiple Suport pentru modelele de adresare (referire) care apar n programe Registre de segment distincte pentru zone de cod, date, stiv Module relocatabile Suport pentru implementarea mecanismelor de potecie i management a memoriei
CTI.DID.207 Arhitectura sistemelor de calcul 4

8086 principii arhitecturale

Moduri de adresare potrivite pentru limbajele de nivel nalt


Schema de adresare a operanzilor din memorie este complemenatr segmentrii memoriei O adres poate avea 4 componente: segment, baz, index i deplasament

Acestea corespund structurilor de date din limbajele de nivel nalt (de ex. tablouri)

8086 este un procesor care poate opera asupra a (cel mult) doi operanzi (surs i destinaie) la un moment dat
CTI.DID.207 Arhitectura sistemelor de calcul 5

8086 principii arhitecturale

Set de registre pentru stocarea operanzilor instruciunilor

Registre pot fi de uz general sau specializate/implicite funcie de contextul n care sunt utilizate 8086 poate efectua operaii cu operanzi reprezentai pe 8 sau 16 bii cu sau fr semn precum i cu operanzi reprezentai n cod BCD mpachetat sau despachetat Pentru a extinde setul de registre i instruciuni (eventual i modul de reprezentare al operanzilor) se pot folosi coprocesoare (ex. 8087 coprocesor matematic)

CTI.DID.207 Arhitectura sistemelor de calcul

8086 principii arhitecturale

Codificare instruciuni optim pentru vitez de execuie i spaiu de memorie ocupat


O instruciune (codificarea ei!) poate ocupa ntre 1 i 6 octei (n medie 3 octei) 8086 are un flux de instruciuni orientat pe octet dei folosete o magistral de 16 bii 8086 este alctuit din dou procesoare independente BIU (Bus Interface Unit) i EU (Execution Unit)
CTI.DID.207 Arhitectura sistemelor de calcul 7

8086 principii arhitecturale

CTI.DID.207 Arhitectura sistemelor de calcul

8086 principii arhitecturale

Execuia unui program const din repetarea urmtorilor pai pentru fiecare instruciune a programului:

Extragere instruciune urmtoare din memorie (ciclu fetch) Citirea unui operand din memorie (dac este necesar) Execuie instruciune Scriere rezultat n memorie (dac este necesar)
CTI.DID.207 Arhitectura sistemelor de calcul 9

8086 principii arhitecturale

CTI.DID.207 Arhitectura sistemelor de calcul

10

8086 resursele accesibile/vizibile programatorului

La nivel de microprocesor

Set de registre Set de instruciuni Memorie Periferice

La nivel de sistem

CTI.DID.207 Arhitectura sistemelor de calcul

11

8086 resursele accesibile/vizibile programatorului

Registre de uz general
Pot fi accesate i pe 8 bii (jumtile HI i LO ale registrelor pe 16 bii)
REGISTRE DATE REGISTRE POINTER SAU INDEX

8 registre de 16 bii 4 registre de date

4 registre pointer sau index

NU pot fi accesate pe 8 bii

Pot fi folosite n general fr constrngeri n operaiile aritmetice i logice

CTI.DID.207 Arhitectura sistemelor de calcul

12

8086 resursele accesibile/vizibile programatorului

Registre de uz general

Registru AX AL AH BX CX CL DX SP SI DI

Operaii Multiplicare, Divizare, I/O pe 16 bii Multiplicare, Divizare, I/O pe 8 bii, Translatare, BCD Multiplicare, Divizare pe 8 bii Translatare Structuri repetitive, Operaii cu iruri Deplasri, Rotiri Multiplicare, Divizare, I/O indirect pe 16 bii Operaii cu stiva Operaii cu iruri Operaii cu iruri
13

Unele registre sunt folosite n mod implicit de unele operaii

CTI.DID.207 Arhitectura sistemelor de calcul

8086 resursele accesibile/vizibile programatorului

Registre de segment

Spaiul de memorie de 1 Megaoctet al 8086 este divizat n segmente logice 8086 are acces la patru segmente simultan prin intermediul a patru registre de segment
REGISTRE DE SEGMENT

Adresele de baz (de nceput) ale celor patru segmente sunt memorate registrele de segment

CS indic segmentul curent de cod; instruciunile sunt extrase (fetched) din acest segment DS indic segmentul curent de date; conine datele/variabilele programului SS indic segmentul curent de stiv; operaiile cu stiva se efectueaz n acest segment ES extra segnent; n mod uzual este tot un segment de date

CTI.DID.207 Arhitectura sistemelor de calcul

14

8086 resursele accesibile/vizibile programatorului

Regsitrul pointer de instruciuni IP


Este actualizat de BIU Conine deplasamentul n cadrul segmentul de cod a instruciunii ce urmeaz s fie executat Programele nu pot accesa direct acest registru, dar pot determina modificarea valorii acestui registru (de ex. prin apelul sau revenirea din funcii)

CTI.DID.207 Arhitectura sistemelor de calcul

15

8086 resursele accesibile/vizibile programatorului

Regsitrul indicatorilor de condiie (flaguri)

6 bii de stare prin care EU semnaleaz anumite proprieti ale rezultatului operaiei efectuate

AF, CF, OF, SF, PF, ZF DF determin modul de actualizare a adresei pentru operaiile cu iruri: inceremntare/decrementare IF valideaz/invalideaz ntreruperile mascabile TF trece procesorul n modul de execuie pas cu pas pentru depanare

3 bii de control

CTI.DID.207 Arhitectura sistemelor de calcul

16

Segmentarea memoriei

8086 vede memoria ca un grup de segmente care sunt definite de aplicaie Un segment este o unitate logic de memorie care poate avea pn la 64 KB Fiecare segment este alctuit dintr-un ir continuu de locaii de memorie i este o unitate independent, separat adresabil Fiecare segment are o adres de baz care reprezint adresa de nceput n memorie Toate segmentele ncep la o adres fizic multiplu de 16 Segmentele pot fi adiacente, disjuncte, parial suprapuse sau total suprapuse O locaie fizic de memorie poate fi mapat (coninut) n unul sau mai multe segmente logice
CTI.DID.207 Arhitectura sistemelor de calcul 17

Segmentarea memoriei

CTI.DID.207 Arhitectura sistemelor de calcul

18

Segmentarea memoriei

Registrele de segment indic (conin valorile pentru adresele de baz) pentru cele patru segment curent accesibile Programele pot accesa codul sau datele stocate in alte segmente prin modificarea valorii din registrele de segment astfel nct acestea s indice ctre segmentele dorite

FFFFFH A B DS : B C CS : E D E SS : H G H ES : J I J K 00000H F

CTI.DID.207 Arhitectura sistemelor de calcul

19

Segmentarea memoriei

O locaie de memorie are:

O adres fizic (AF) O valoare pe 20 de bii care identific n mod unic fiecare octet din spaiul de adresare de 1 MB Toate transferurile de informaie dintre CPU i memorie folosesc adrese fizice O adres logic (AL) Este o pereche de valori pe 16 bii: adres de segment (AS) i offset (deplasamnet n cadrul segmentului sau Adres Efectiv AE) Adresa de segment indic primul octet din segmentul care conine locaia, iar offsetul conine distana n octei fa de nceputul segmentului
CTI.DID.207 Arhitectura sistemelor de calcul 20

Segmentarea memoriei

Cnd BIU acceseaz memoria pentru a extrage o instruciune sau pentru a citi sau scrie o dat se genereaz o adres fizic dintr-o adres logic:

Se deplaseaz adresa de segment cu patru poziii binare la stnga i apoi se adun offsetul AF = AS << 4 + AE AF = AS * 16 + AE

n acest mod, dintr-o adres logic (dou cantiti pe 16 de bii) se obine adresa fizic pe 20 de bii Acest calcul este efectuat n mod automat de BIU
CTI.DID.207 Arhitectura sistemelor de calcul 21

Segmentarea memoriei

CTI.DID.207 Arhitectura sistemelor de calcul

22

Segmentarea memoriei

Surse de adrese logice


Registru segment implcit CS SS DS DS ES SS Alte registre de segment posibile CS,ES,SS CS,ES,SS CS,ES,SS Offset IP SP Effective Address SI DI Effective Address

Tip acces Instruction fetch Stack operation Data (except following) String source String destination BP used as base

CTI.DID.207 Arhitectura sistemelor de calcul

23

Moduri de adresare

Modurile de adresare specific modul n care se calculeaz adresa operandului aflat n memorie (deplasamentul sau adresa efectiv din adresa logic)

CTI.DID.207 Arhitectura sistemelor de calcul

24

Moduri de adresare

Adresarea imediat

Operandul apare n instruciune este inclus n codificarea instruciunii Exemple mov ax, 1 mov bx, 1234h Operandul este reprezentat de un registru (valoarea dintrun registru) specificat n instruciune Exemple mov ax, bx add dx, cx
CTI.DID.207 Arhitectura sistemelor de calcul 25

Adresarea registru

Moduri de adresare

Adresarea direct

Adresa efectiv a operandului este specificat printr-un deplasament n interiorul segmentului curent Exemplu .data x dw 1122h .code mov ax, x mov bx, [5]
CTI.DID.207 Arhitectura sistemelor de calcul 26

Moduri de adresare

Adresare indirect

Adresa efectiv a operandului este dat de coninutul registrelor BX, SI, DI sau BP (pentru BP, registrul de segment implicit este SS!) Exemple mov [bx], ax mov [si], dx mov byte ptr [di], 2
CTI.DID.207 Arhitectura sistemelor de calcul 27

Moduri de adresare

Adresare bazat sau indexat

Adresa efectiv se obine adunnd la unul din registrele de baz (BX sau BP) sau la unul din registrele index (SI sau DI) un deplasament constant pe 8 sau 16 bii Exemple

BX SI DI BP

mov ax, [bx+5] mov [bp+2], dx mov cx, [si+4] mov ax, [bx] mov ax, [200] mov ax, [bx+20] mov ax, [si+8] adresare indirect adresare direct adresare bazat adresare indexat

Deplasament AE AS*16

+ +
AF
28

CTI.DID.207 Arhitectura sistemelor de calcul

Moduri de adresare

Adresare bazat sau indexat

BX SI

Exemple

.data V db 10 dup (0) .code mov bx, 3 mov ax, V[bx] mov ax, bx[V] mov ax, [bx+V] mov ax, [bx].V

DI BP
Deplasament AE AS*16
CTI.DID.207 Arhitectura sistemelor de calcul

+ +
AF
29

Moduri de adresare

Adresare bazat i indexat:


Adresa efectiv este format prin adunarea unuia din registrele de baz cu unul din registrele index i su un deplasament pe 8 sau 16 bii Exemple mov ax, [bx][si] mov [bx+di+4], ax mov [bp][di].8, dx

CTI.DID.207 Arhitectura sistemelor de calcul 30

Moduri de adresare

Pentru calculul adresei fizice se folosete implicit un anumit registru de segment care particip la formarea adresei fizice (vezi tabel anterior):

Dac n adresa efectiv apare registrul BX, atunci se folosete ca registru de segment DS Dac n adresa efectiv apare registrul BP, atunci ca registru de segment SS

Regulile de utilizare implicit pot fi modificate prin folosirea prefixelor de segment


mov bx, ds:[bp+2] mov ax, cs:[bx+si+4] mov dx, ss:[bx]
CTI.DID.207 Arhitectura sistemelor de calcul 31

Codificarea instruciunilor

Codificarea instruciunilor cuprinde:


Codul instruciunii (tipul operaiei) opcode Modul de adresare Deplasamentul operandului aflat n memorei sau adresa efectiv (n cazul adresrii directe) pe 8 sau 16 bii Date imediate pe 8 sau 16 bii

La instruciunile cu doi operanzi, un operand este obligatoriu un registru


CTI.DID.207 Arhitectura sistemelor de calcul 32

Codificarea instruciunilor

COD opcode D destinaie


0 : R/M = R/M op REG 1 : REG = REG op R/M 0 : operaie pe octet 1 : operaie pe cuvnt

W byte/word

REG indic operandul de tip registru R/M indic al doilea operand de tip registru sau registrele care particip la formarea adresei efective MOD codific modul de adresare
CTI.DID.207 Arhitectura sistemelor de calcul 33

Codificarea instruciunilor
MOD R/M 0 1 2 3 4 5 6 7 11 W=1 AL CL DL BL AH CH DH BH W=0 AX CX DX BX SP BP SI DI BX+SI BX+DI BP+SI BP+DI SI DI Direct BX BX+SI+D8 BX+DI+D8 BP+SI+D8 BP+DI+D8 SI+D8 DI+D8 BP+D8 BX+D8 BX+SI+D16 BX+DI+D16 BP+SI+D16 BP+DI+D16 SI+D16 DI+D16 BP+D16 BX+D16 00 01 11

CTI.DID.207 Arhitectura sistemelor de calcul

34

Limbaj de asamblare

Limbaj de programare de nivel sczut. Utilizeaz o reprezentare simbolic (mnemonice) a operaiilor pe care le poate executa un microprocesor. Este definit de productorul microprocesorului i este specific unei familii de microprocesoare. Utilitate / avantaje

Permite nelegerea n amnunt a ceea ce se petrece ntr-un calculator Permite scrierea de secvene de cod a cror timp de execuie i spaiu de memorie consumate pot fi calculate cu precizie Permite accesul le resurse ale sistemului de calcul care pot s nu fie accesibile ntr-un mod satisfctor (sau chiar deloc) folosind funcii de bibliotec ale unor compilatoare Pentru unele sisteme de calcul dedicate este posibil s nu existe construite compilatoare dedicate; singurul mod de a programa aceste sisteme este folosirea limbajului de asamblare Portabilitate sczut Greu de asimilat datorit multitudinii detaliilor pe care le prezint o arhitectur de calcul Eficien sczut n ceea ce privete cantitatea de cod scris i funciile implementate de respectivul cod

Dezavantaje

CTI.DID.207 Arhitectura sistemelor de calcul

35

Limbaj de asamblare
Cod main (Binar) 1010000110010100000 0001011110111001011 1010010010000000100 1010000101000011001 0000000000101111011 1001011101000111000 0000100101101000000 0111101000010001001 0001011010001100000 00010 Cod main (Hex) A19402 F72E9202 50 A19002 F72E8E02 5A 03D0 89168C02 mov imul push mov imul pop add mov Cod ASM ax, _a _b ax ax, _c _d dx dx, ax _e, dx Cod C e = a * b + c* d

Spaiu de memorie (octei):

22 octei = 3+4+1+3+4+1+2+4

Nu se poate preciza

Timp de execuie maxim (cicli):

384 cicli = 10+166+11+10+166+8+3+10

Nu se poate preciza

CTI.DID.207 Arhitectura sistemelor de calcul

36

Bibliografie
Ghe. Musc, Programare n limbaj de asamblare, Ed. Teora, 1997 R. Hyde, The Art of Assembly Language, http://www.computerbooks.us/assembler_5.php

CTI.DID.207 Arhitectura sistemelor de calcul

37

Linkuri utile

http://www.arl.wustl.edu/~lockwood/class/cs3 06/books/artofasm/toc.html http://www.computerbooks.us/assembler_5.php

CTI.DID.207 Arhitectura sistemelor de calcul

38

Tem

Studiai coninutul paginii Web

http://en.wikipedia.org/wiki/Assembly_language

CTI.DID.207 Arhitectura sistemelor de calcul

39