Documente Academic
Documente Profesional
Documente Cultură
P.Lucrare.01.A
Coninut
1.
Introducere ......................................................................................................................2
1.1.
Scop .........................................................................................................................2
2. Arhitectura procesorului Intel 8086...............................................................................2
Unitile de procesare ale CPU : ..........................................................................................3
2.1.
Registrele microprocesorul 8086 ..............................................................................4
2.1.1.
Registrele de uz general...................................................................................5
2.1.2.
Registrele de segment......................................................................................6
2.1.3.
Registrul pointerului de instrunciuni.................................................................6
2.1.4.
Registrul indicatorilor de conditie (de stare i control) ......................................6
2.2.
Organizarea memoriei ..............................................................................................7
2.3.
Generarea adresei fizice ..........................................................................................8
3. Aplicaii ..........................................................................................................................11
Lista de figuri
Figura 1. 1 8086 schema bloc .............................................................................................3
Figura 1. 2 Registrele de uz general ........................................................................................5
Figura 1. 3 Registrele segment ................................................................................................6
Figura 1. 4 Indicatorii de condiii...............................................................................................6
Figura 1. 5 Organizarea memoriei Memorarea variabilelor i instrunciunilor .....................8
Figura 1. 6 Memorarea variabilelor de tip word........................................................................8
Figura 1. 7 Memorarea variabilelor de tip pointer.....................................................................8
Figura 1. 8 Adresa fizica i adrese logice.................................................................................9
Figura 1. 9 Generarea adresei fizice ........................................................................................9
Figura 1. 10 Exemplul 1 de generare a adresei fizice ............................................................10
1. Introducere
1.1.
Scop
L.1 - 2/11
maxim a memoriei.
Caracteristici hardware esentiale ce definesc funcionarea microprocesorului Intel 8086:
n EU are loc execuia instructiunilor n timp ce BIU extrage instruciunile, citeste operanzii i
scrie rezultatele n memorie. Cele doua unitati pot opera independent una de cealalta i pot
asigura n majoritatea cazurilor suprapunerea n timp a etapei de extragere a unei
instructiuni cu etapa de execuie a unei instructiuni precedent extrase din memorie. n acest
mod, practic "dispare" timpul necesar extragerii instructiunilor din memorie, crescand viteza
de lucru a microprocesorului deoarece EU executa instructiuni al caror cod a fost deja adus
de catre BIU din memorie n microprocesor.
Unitatea de execuie conine regitrii de uz general, unitatea aritmetico-logic, registrul
indicatorilor de conditie, un bloc logic de control i o magistral intern de date de 16 bii
(Figura 1. 1).
.
Figura 1. 1 8086 schema bloc
Funciile EU acoper execuia tuturor instruciunilor, furnizarea datelor i a adreselor ctre
BIU, controlul registrelor de uz general i al indicatorilor de conditie. Cu exceptia ctorva pini
L.1 - 3/11
de control, unitatea de execuie este complet izolat de "lumea exterioar". Asa cum se
evideniaz n Figura 1. 1, EU preia instruciunea urmtoare de executat dintr-o coad de
ateptare alimentat continuu de unitatea de interfa cu magistrala.
n situatia n care nu exista nici o instrunciune de preluat pentru a fi executat, unitatea de
execuie asteapt pn cnd coad este realimentat de ctre BIU. Dac n cursul execuiei
instrunciunii este necesar accesul la o locaie de memorie sau la un echipament periferic,
EU solicit unitii de interfaa cu magistrala s transfere data, executnd ciclul de magistral
corespunzator (citire/scriere la memorie sau port). Totodat, dei magistrala EU are doar 16
bii, se poate accesa n exterior ntregul spaiu de un megaoctet de memorie prin intermediul
BIU care asigur relocatarea adresei naintea fiecarui transfer.
BIU Unitatea de interfaa cu magistrala execut toate operaiile externe de magistral ce
sunt necesare pe parcursul extragerii i execuiei unei instruciuni. Ea se compune din
regitrii de segment, un registru de tip contor de program denumit pointer de instrunciuni
(instruction pointer), regitri de comunicatie intern, o schem logic pentru generarea
adresei pe cele 20 de linii de adresa ale microprocesorului 8086 i pentru controlul
magistralei multiplexate precum i o coad de instrunciuni (queue). Aceasta este realizat
cu o memorie RAM de 6 octei i contine instrunciuni care sunt extrase n avans de BIU i
urmeaz s fie preluate de EU pentru decodificare i execuie.
Cele dou uniti de procesare ale CPU opereaz independent una de alta n sensul c,
ori de cite ori doi sau mai muli octei din coad sunt liberi, iar EU nu solicit BIU la
efectuarea vreunui ciclu de magistral, unitatea de interfa cu magistrala execut n avans
cicluri de extragere de instrunciuni pentru a realimenta locaiile libere din coada de
instrunciuni. Acest mod de lucru permite BIU s furnizeze EU instrunciuni extrase anterior
fr a monopoliza magistrala sistemului cci, n mod normal, n majoritatea situaiilor coad
de instrunciuni contine cel putin un octet ce poate fi preluat de EU pentru decodificare i
execuie. n plus, cum sistemele cu microprocesor 8086 au uzual magistrala de date de 16
biti, ntr-un singur ciclu de extragere se alimenteaza coad cu doi octeti, cu exceptia cazurilor
cnd adresa de la care se citete instrunciunea urmtoare este impar, asa cum se va arta
ulterior.
Instruciunile extrase n avans de BIU sunt cele care urmeaz n mod logic ntr-o procesare
serial a programului, ele aflndu-se n memorie n locaii adiacente i la adrese superioare
adresei instrunciunii care se execut la un moment dat. n cazul n care EU executa o
instrunciune care transfer controlul programului ctre o alt locaie de memorie, BIU
reseteaza coada, extrage instrunciunea de la noua adres, transfernd-o imediat unitii de
execuie, apoi ncepe realimentarea cozii de la noua locaie. De asemenea, BIU suspend
operatiile de extragere de instrunciuni (cu excepia celei n curs de desfurare) ori de cte
ori unitatea de execuie solicit efectuarea pe magistral a unui transfer cu memoria sau cu
un port de intrare/ieire.
2.1.
L.1 - 4/11
Registrele generale (AX, BX, CX, DX) - sunt utilizate n instruciunile aritmetice i logice.
Majoritatea instruciunilor aritmetice utilizeaz n acelai mod toate registrele. Exist ns
unele instruciuni aritmetice pentru care anumite registre generale au semnificaii speciale:
AX - registru acumulator, BX - registru baz, CX - registru contor, DX - registru date - utilizat
implicit n operaiile de nmulire i mprire; i de asemenea poate conine adresa unui port.
Toate cele patru registre generale pot fi utilizate i ca perechi de registre pe 8 bii.
Registrele indicatoare de adres (SP, BP) - registrul SP are semnificaia de adres
curent a vrfului stivei, iar registrul BP este utilizat pentru a permite accesul la informaia
coninut n stiv.
Registrele index (SI, DI) - sunt utilizate n general pentru adresarea indexat, coninnd
adrese relative n segmentul de date curent. Segmentul implicit utilizat n adresare poate s
fie modificat prin utilizarea n instruciuni a unor prefixe speciale.
Att registrele de date ct i registrele pointer i index pot fi folosite n majoritatea operaiilor
aritmetice i logice, oricare dintre ele putnd juca rolul registrului "acumulator" existent la
generaiile precedente de microprocesoare. Pentru a permite utilizarea unui set compact, dar
puternic de instruciuni, anumite registre sunt folosite n mod implicit de unele instruciuni,
aa cum arat Tabel 1.
OPERATII
AX
AL
AH
L.1 - 5/11
BX
Translatri
CX
CL
DX
SP
Operaii cu stiva
SI, DI
Indicatorii de condiii sunt utilizai pentru a memora informaii referitoare la rezultatul unor
operaii aritmetice sau logice (AF, CF, OF, PF, SF, ZF) i pentru memorarea unor informaii
de control pentru microprocesor (DF, IF, TF).
L.1 - 6/11
CF (Carry) - 1 dac a aprut un transport din sau s-a fcut un mprumut catre cel
mai semnificativ bit (MSB) al rezultatului reprezentat pe 8 sau 16 biti. Acest indicator
este utilizat de instructiunile ce implic operaii de adunare sau scdere cu numere
reprezentate pe unul sau mai multi octei. De asemenea unele instruciuni pot
poziiona acest indicator (exemplu: instruciunile de rotire, deplasare de bii).
SF (Sign) - 1 dac s-a obinut un rezultat pentru care bitul cel mai semnificativ este
1 (prin convenie, 0 indic un numr pozitiv, iar 1 - un numr negativ).
PF (Parity) - 1 dac s-a obinut un rezultat cu paritate par (conine un numr par de
bii cu valoarea 1). Poate fi utilizat pentru verificarea erorilor de transmisie a datelor.
TF (Trace) - este utilizat pentru controlul execuiei instruciunilor n regim pas cu pas
n scopul depanrii programelor, CPU genereaz automat o ntrerupere interna dup
fiecare instructiune dac TF=1.
EU poziioneaz cei 6 indicatori de stare pentru a reflecta anumite stri ale unei operaii
aritmetice sau logice. Un anumit set de instruciuni permit modificarea execuiei unui program
n funcie de starea acestor indicatori - cum ar fi instruciunile de salt condiionat.
2.2.
Organizarea memoriei
Microprocesorul 8086 poate adresa direct un spatiu de 1Mo = 1.048.576 octei organizat
liniar cu adresele joase la nceput i adresele nalte la sfirit. Instruciunile i datele pe octet
sau cuvnt pot fi plasate liber la orice adres, fie ea par sau impar, pentru a permite o
stocare densa a codului programului n memorie acesta fiind unul din conceptele impuse
la proiectarea procesorului. Totui, trebuie remarcat faptul c memorarea unei variabile de
tip word la o adres impar situaie n care se spune c variabila este nealiniat
(unaligned) anuleaz din punct de vedere al transferului variabilei respective avantajul
microprocesorului 8086 de a avea o magistral de date de 16 bii. n ceea ce privete
instruciunile, alinierea sau nealinierea lor nu afecteaz performanele microprocesorului
datorit cozii de ateptare din BIU.
L.1 - 7/11
OFFSET : 65H
2.3.
Se poate imagina ca fiecare locaie de memorie are doua feluri de adresa: fizic i logic.
Adresa fizica este acea valoare pe 20 de bii care identific n mod unic fiecare octet din
spaiul de memorie de 1Mo. Ea este cuprins ntre 00000H i FFFFFH i exist pe liniile
magistralei multiplexate la nceputul fiecrui ciclu de scriere sau citire n/din memorie.
L.1 - 8/11
Programatorul opereaz ns mai mult cu adresa logic dect cea fizic, ceea ce permite
scrierea unui program fr a cunoate dinainte locul unde codul acestuia va fi ncarcat n
memorie i faciliteaz controlul dinamic al resurselor de memorie. O adres logic const
dintr-o valoare de baz a segmentului i o valoare de offset (deplasamnt), ambele fiind
mrimi fr semn reprezentate pe 16 bii. Pentru orice locaie de memorie, valoarea de baz
a segmentului indic primul octet coninut n segment (nceputul segmentului), iar valoarea
de offset reprezinta distana n octei de la acest nceput pn la locaia respectiv. Primul
octet (cel mai de jos) aparinnd unui segment are deci offset-ul egal cu zero. Avnd n
vedere conceptul de segment logic, rezult c o locaie fizic de memorie poate avea o
mulime de adrese logice. Acest fapt este ilustrat n Figura 1. 8 n care locaia de memorie
fizic 2C3H este coninut n dou segmente logice suprapuse parial, unul ncepnd la
2B0H, iar altul la 2C0H.
L.1 - 9/11
Instruciunile sunt extrase din segmentul de cod, iar offset-ul este dat de registrul IP.
Operaiile cu stiva sunt executate n segmentul de stiv curent, iar offsetul este dat de
registrul SP, .a.m.d.
Offsetul unei variabile din memorie este calculat de unitatea de execuie n funcie de modul
de adresare specificat n instrunciune; rezultatul se numete adresa efectiv (effective
address EA).
In majoritatea cazurilor, utilizarea segmentelor implicite pentru accesul datelor n memorie
este convenabil pentru programator. Este posibil ns i accesul unei variabile n oricare
dintre segmentele adresabile n mod curent (cu excepia instruciunilor ce manipuleaz iruri
de caractere unde operandul destinaie este obligatoriu s se gaseasc in segmentul de
date suplimentar). Pentru a obine acest lucru, instruciunea trebuie precedat de un prefix
segment override prefix care indic BIU ce registru de segment s utilizeze pentru a
accesa variabila respectiv.
Tabel 2 Sursele de adresa logica
L.1 - 10/11
3. Aplicaii
1. Cte magistrale are microprocesorul 8086 i cum sunt utilizate ?
2. Explicai care este diferena ntre EU i BIU, i care este rolul fiecreia.
3. Indicai rolul indicatorilor de condiie.
4. Care este rolul unitii aritmetico-logice ALU?
5. Care este rolul registrului IP?
6. Dac registrul de segment CS conine valoarea 2200H, iar registrul IP conine
valoarea 4200H, indicai care este adresa din memorie de la care va fi extras
urmtoarea instruciune.
7. n locaia de memorie 12234H este stocat variabila de tip cuvnt 2C46H. Precizai
cel puin nu segment n care s fie coninut. Indicai cum este memorat variabila.
L.1 - 11/11