You are on page 1of 11

Sisteme cu microprocesoare

ARHITECTURA PROCESORULUI INTEL 8086


Lucrarea 1

P.Lucrare.01.A


Arhitectura procesorului Intel 8086
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
Aceast anex prezint:
Arhitectura procesorului 8086

2. Arhitectura procesorului Intel 8086

La baza proiectrii i realizrii familiei lui 8086 au stat patru concepte arhitecturale noi la
momentul respectiv :
1. segmentarea memoriei, prin care se permite programarea modular, deschizndu-
se astfel calea implementarii tehnicilor de protecie i partajare a memoriei.
2. poibilitatea implementrii cu usurin a unor moduri de adresare caracteristice
limbajelor de programare de nivel nalt (bazat, indexat, pentru structuri de date).
3. cresterea puterii de calcul pe baza unui set de regitri optimizat pentru a realiza
funcii generale i specializate de procesare a datelor, precum i introducerea
unitilor aritmetice de calcul de tipul coprocesoarelor aritmetice, echipamente care
se conecteaz pe magistralele microprocesorului n paralel cu acesta, crescnd mult
viteza de lucru a istemului n unele aplicaii

L.1 - 2/11
Arhitectura procesorului Intel 8086
4. set de instructiuni codificat anume pentru utilizarea la viteza crescut i cu eficien
maxim a memoriei.
Caracteristici hardware esentiale ce definesc funcionarea microprocesorului Intel 8086:
multiplexarea n timp a magistralei de adrese i date (20 linii de adresa, 16 linii de
date)
microprocesorul are o configuraie intern comutabil pentru adaptarea la nivelul
de complexitate a sistemului n care este utilizat.
Unitile de procesare ale CPU :
EU (execution unit) unitatea de execuie
BIU (bus interface unit) unitatea de interfaa cu magistrala.
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
Arhitectura procesorului Intel 8086
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. Registrele microprocesorul 8086

Pot fi clasificate din punctul de vedere al rolului pe care l au n 5 grupuri:
registrele generale (pe 16 bii): AX, BX, CX, DX;
registrele indicatoare de adres (pe 16 bii): SP, BP;
registrele index (pe 16 bii): I, DI;
registrele segment (pe 16 bii): CS, DS, ES, SS;
registrul adresei instruciunii curente (pe 16 bii): IP.


L.1 - 4/11
Arhitectura procesorului Intel 8086
2.1.1. Registrele de uz general
Microprocesorul 8086 are 8 registre generale de 16 biti grupate n doua seturi a cite 4
registre fiecare: registrele de date (uneori denumite grupul registrelor H&L de la high i low)
i registrele pointer i index (denumite i grupul P&I) - Figura 1. 2.


Figura 1. 2 Registrele de uz general

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.

Tabel 1 Utilizarea implicit a registrelor de uz general
REGISTRU OPERATII
AX nmuliri, mpriri i I/E pe cuvnt
AL nmuliri, mpriri i I/E pe octet, translatri, aritmetic zecimal
AH nmuliri i mpriri pe octet

L.1 - 5/11
Arhitectura procesorului Intel 8086
BX Translatri
CX Operaii cu iruri de caractere, contor pentru operaraii repetate
CL Deplasri i rotiri cu mai mult de o poziie
DX nmuliri i mpriri pe cuvnt, I/E cu adresare indirect
SP Operaii cu stiva
SI, DI Operaii cu iruri de caractere


2.1.2. Registrele de segment
Spatiul fizic de memorie de 1 Mb direct adresabil de microprocesorul 8086 este divizat n
segmente logice de pn la 64 kb fiecare. CPU are acces direct n orice moment la patru
segmente logice ale cror adrese de baza (adresele de nceput ale segmentelor) se afla n
regitrii de segment ai microprocesorului. Registrele de segment (Figura 1. 3) conin :
adresa de nceput a segmentului de cod (CS) din care sunt extrase instruciunile, adresa de
baz a segmentului de date (DS), adresa de baz a segmentului de date suplimentar (ES) i
adresa de baz a segmentului de stiv (SS).

Figura 1. 3 Registrele segment
2.1.3. Registrul pointerului de instrunciuni
Registrul pointerului de instrunciuni IP (nstruction Pointer) este similar registrului contor
de program (Program Counter) al microprocesoarelor pe 8 biti. Este un registru pe 16 bii.
Actualizat de catre BIU, el conine deplasamentul (offsetul, distana n octei) instruciunii
urmtoare fa de nceputul segmentului de cod curent.

2.1.4. Registrul indicatorilor de conditie (de stare i control)
Registrul indicatorilor de conditie (Flags register) conine 6 indicatori de stare i 3
indicatori de control, notai conform cu Figura 1. 4.

Figura 1. 4 Indicatorii de condiii

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
Arhitectura procesorului Intel 8086
AF (Auxiliar Carry) - 1 dac n execuia unei instruciuni care poziioneaz acest
indicator a aprut un transfer de la semioctetul inferior la semioctetul superior al
rezultatului (un transport dinspre bitul 7 spre bitul 8 sau un mprumut dinspre bitul 8
ctre bitul 7). Acest indicator este folosit n aritmetica zecimal.
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).
OF (Overflow) - 1 dac n execuia unei instruciuni aritmetice cu semn dimensiunea
rezultatului depete capacitatea locaiei de destinaie i a fost pierdut un bit; a
aprut o depire aritmetic. Este de remarcat faptul c exist o instructiune
(INTerrupt On Overflow) care genereaza o cerere de intrerupere pentru semnalarea
apariiei acestei situaii.
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.
ZF (Zero) - 1 dac s-a obinut rezultatul zero.
DF (Direction) - indic direcia de parcurgere a irurilor de octei n cazul
instruciunilor pe iruri de octei. Stabilete dac operaiile pe iruri lucreaz prin
incrementare (cnd are valoarea 1) sau prin decrementare (valoarea 0)
IF (Interrupt) - este poziionat pe 1 pentru a permite CPU s recunoasc cererile de
ntrerupere externe mascabile. Modificarea valorii lui IF nu are efect asupra
ntreruperilor generate intern n CPU sau a celor externe nemascabile.
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
Arhitectura procesorului Intel 8086

Figura 1. 5 Organizarea memoriei Memorarea variabilelor i instrunciunilor

Conform conventiilor INTEL, o variabila de tip word este ntotdeauna memorat cu octetul
cel mai semnificativ n locaia de memorie cu adres superioar.
Aceasta regul se extinde i la memorarea variabilelor de tip pointer (variabile pe un
cuvnt dublu foloite pentru a adresa date n afara segmentului de date sau de program ce
este adresabil n mod curent la momentul respectiv): cuvntul ce conine ofsetul se
memoreaz la cele dou adrese inferioare, cuvntul ce conine adresa de baz a
segmentului se memoreaz la cele dou adrese superioare la care este stocat pointerul, iar
n cadrul fiecarui cuvnt, octetul cel mai semnificativ este la rndul lui memorat la adresa
superioar.

Figura 1. 6 Memorarea variabilelor de tip word

ADRESA BAZA SEGMENT : 3B4CH OFFSET : 65H
Figura 1. 7 Memorarea variabilelor de tip pointer

2.3. Generarea adresei fizice

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
Arhitectura procesorului Intel 8086
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.


Figura 1. 8 Adresa fizica i adrese logice
Ori de cite ori unitatea de interfa cu magistrala acceseaz memoria pentru a extrage o
instrunciune sau pentru a obine sau stoca o variabil ea genereaz adresa fizic pe
baza adresei logice. Aceasta se realizeaz prin deplasarea la stnga cu patru poziii binare a
valorii de baza din registrul de segment i adunarea valorii de offset (deplasament) - Figura
1. 9, Figura 1. 10.

Figura 1. 9 Generarea adresei fizice


L.1 - 9/11
Arhitectura procesorului Intel 8086

Figura 1. 10 Exemplul 1 de generare a adresei fizice

Exemplul 2: Fie baza de segment = 6020H i offset-ul = 4267H



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
Arhitectura procesorului Intel 8086
Modul de obtinere a adresei fizice si structura segmentata a memoriei creaz posibilitatea
realizrii de programe ce nu depind de locul unde sunt ncarcate in memorie, adic
programe relocatabile n mod dinamic, ceea ce permite utilizarea deplin a memoriei
disponibile i realizarea de sisteme multitasking. Astfel, programele inactive pot fi
ndepartate din memorie (transferate pe disc) i spaiul ocupat de ele alocat altor programe.
Activarea unui program se face prin ncrcarea lui n orice zon liber din memorie i
lansarea n execuie. In mod similar, dac un program are nevoie de un spaiu de memorare
continuu de capacitate mare, iar zona disponibil este fragmentat, segmentele altui
program pot fi compactate pentru a elibera spaiul, situaie ilustrat n figura 4.9 din cursul de
Bazele Microprocesoarelor.
Pentru a fi relocatabil dinamic, un program trebuie s nu-i ncarce sau modifice registrele de
segment sau s transfere controlul ntr-o locaie aflat n afara segmentului curent de cod.
Toate offset-urile vor fi relative la valorile fixe continute n registrele de segment. Programul
poate fi mutat oriunde n memorie, prin simpla actualizare a adreselor de baz de segment.

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