Sunteți pe pagina 1din 11

MATERIE PENTRU LABORATOR BPC

Tamponul de adrese i date asigur transferul acestuor informaii


ntre magistrala intern a microprocesorului i magistralele externe, sub
controlul blocului de secveniere i comand.
Registrul instruciunii primete opcodul instruciunii curente i l
menine pe ntrega durat de execuie a instruciunii.
Decodificatorul instruciunii decodific opcodul i planific
operaiile care urmeaz a fi efectuate pentru execuia instruciunii i ordinea
n care acestea vor avea loc.
Unitatea logic i aritmetic execut operaii logice i aritmetice cu
maxim doi operanzi ntregi fr semn pe 8 bii. Unul dintre operanzi trebuie
s se afle obligatoriu n registrul A, iar cellat operand, dac exist, este
adus dintr-un registru intern sau din exterior (din memorie) la momentul
execuiei operaiei, ntr-un registru temporar. Rezultatul operaiei este
reinut tot de registrul A, motiv pentru care poart numele de acumulator.
Modul de desfurare a operaiei i caracteristicile rezultatului sunt
memorate ntr-un set de bistabile denumii indicatori de condiii (flags):
Z zero (rezultat zero al operaiei aritmetice sau logice);
S sign (semnul rezultatului, egal cu msb al acumulatorului);
P parity (rezultatul are un numr par/impar de bii 1);
CY carry;
AC - auxiliary carry (transport/mprumut de la / spre bitul 7, respectiv
bitul 3 al rezultatului ultimei operaii aritmetice).
Acumulatorul, mpreun cu flagurile formeaz cuvntul de stare al
procesorului (PSW processor status word):
PSW = A7 A6 A5 A4 A3 A2 A1 A0 S Z AC P CY
Starea acestor indicatori poate influena modul de desfurare i
rezultatul
unor instruciuni aritmetice i de ramificare condiionat - fig. 5.
Registrele generale de lucru de 8 bii sunt n numr de 6,
simbolizate prin B, C, D, E, H i L. Ele pot fi folosite pentru a memora date
i rezultate intermediare ale programului. Sunt accesibile programului prin
instruciuni adecvate, att ca registre simple de 8 bii, ct i n perechi, ca
registre de 16 bii:
- B i C = registrul pereche B;
- D i E = registrul pereche D;
- H i L = registrul pereche H.
Registrele speciale sunt de 16 bii i ndeplinesc anumite funcii ale
microprocesorului. Astfel, numrtorul de instruciuni (PC - Program
Counter) conine n fiecare moment adresa instruciunii ce urmeaz a fi
executat. Ele este iniializat cu 0 la resetarea microprocesorului i este
implicit incrementat pentru secvene liniare de instruciuni, respectiv este
modificat direct de ctre instruciunile de ramificare (fig.2).
Indicatorul vrfului stivei (SP - Stack Pointer) este utilizat pentru
accesul ntr-o zon de memorie RAM organizat ca stiv hardware. La 8085,
stiva este o zon de memorie cu acces de tip LIFO (last in, first out).
Accesul are loc pe la un singur capt al stivei, iar SP conine n orice
moment adresa acestei locaii (ultima ocupat din stiv). Stiva crete n
sensul descresctor al adreselor de memorie i pe stiv informaiile se
depun i se extrag pe 16 bii (2 octei). Spre exemplu, n fig.3 se arat
evoluia stivei dup iniializare i depunerea pe stiv a 3 valori pe 16 bii.
Blocul de secveniere i comand primete semnale de iniializare
i de tact i genereaz secvenele necesare ale semnalelor de control att
pentru structurile interne implicate n execuie, ct i pentru sincronizarea
transferului pe magistrala de date extern.
Blocul de comand ntreruperi i I/E serial gestioneaz tratarea
evenimentelor externe i transferul datelor la nivel de bit.


3.1. Principiul de funcionare al stivei la microprocesorul 8085
Stiva este o zon de memorie liniar (format din locaii amplasate la
adrese consecutive) cu acces indirect pe la un singur capt (top of stack
vrful stivei), prin intermediul registrului SP (Stack Pointer indicator al
vrfului stivei).
La microprocesorul 8085 stiva crete n sensul descresctor al
adreselor locaiilor de memorie. ntruct funcionarea stivei implic att
operaii de citire (extragere), ct i de scriere (depunere) n stiv, stiva
trebuie organizat ntr-o zon de memorie de tip RAM.


Rolul stivei este acela de a furniza o cale comod pentru a stoca
temporar informaii (date sau adrese) n memorie fr a reine pentru
fiecare adresa exact la care sunt stocate. Ceea ce trebuie reinut este doar
ordinea n care informaiile sunt stocate, deoarece ele vor fi extrase din
stiv n ordinea invers celei n care au fost depuse. Deci stiva are o
organizare de tip LIFO (Last In - First Out: primul element extras este
ultimul element care a fost depus).
Operaiile de depunere i de extragere sunt efectuate cu elemente
formate din 2 octei, fie c este vorba despre date, fie c este vorba de
adrese (care oricum au 2 octei). De aceea, depunerea unui element n
memorie se face prin dou scrieri succesive n stiv, iar extragerea unui
element implic realizarea a dou citiri succesive din memorie. De fiecare
dat, adresa locaiei nscrise sau citite este furnizat de registrul SP, care se
actualizeaz n mod corespunztor.
SP conine n orice moment adresa ultimei locaii ocupate din stiv. De
aceea, dup fiecare octet citit din stiv, SP se incrementeaz, iar nainte de
scrierea unui octet n stiv SP este dectementat. Asta nseamn c dup
depunerea unui element (2 octei) n stiv, SP va fi mai mic cu 2, iar dup
extragerea unui element din stiv, SP va fi mai mare cu 2.




Operaiile de depunere i de extragere sunt realizate la execuia unor
instruciuni specifice:
- PUSH / POP pentru coninutul registrelor pereche (B, D, H) i a
cuvntului de stare al programului (PSW).
- CALL, RET pentru coninutul registrului PC.
Informaiile din registrele pereche B, D i H pot fi: date pe 16 bii sau
adrese ale unor date amplasate n memorie, PSW conine date
(acumulatorul) i condiii (flaguri), iar PC conine adresa instruciunii
urmtoare.
Instruciunile PUSH i POP au urmtorul format general:



Stiva este o zon de memorie, care poate fi definit folosind aceleai
directive de asamblare ca i n cazul altor variabile, cu o singur meniune:
dac pentru variabilele obinuite se marcheaz printr-o etichet adresa de
nceput a zonei de memorie rezervate (adresa cea mai mic), pentru stiv
se marcheaz adresa de dup cea a ultimei locaii rezervate, care va
constitui vrful stivei i va iniializa registrul SP. Motivul l constituie faptul
c stiva crete n sensul descresctor al adreselor.




3.3. Instruciuni de apel i de revenire
n cadrul unui program pot fi puse n eviden anumite secvene de
operaii care se execut n mod repetat, de fiecare dat la fel, eventual cu
alte date. Includerea n cadrul programului a aceleiai secvene de cod de
fiecare dat cnd trebuie executat, conduce la programe lungi, greu de
scris, de urmrit i de depanat. Este de preferat ca secvena de operaii s
apar o singur dat n memorie, ncepnd cu o anumit adres (secventa),
iar de fiecare dat cnd se dorete execuia ei, n programul principal s se
efectueze un salt la adresa respectiv.




Dup execuia secvenei, ns, se dorete continuarea programului
principal din punctul n care a fost prsit. Acest lucru nu este posibil dac
programul principal a fost prsit cu o instruciune de salt, deoarece
aceasta
distruge vechiul coninut al registrului PC. Adresa de revenire nu poate fi
cunoscut nici de secvena de instruciuni, pentru c aceasta nu este
constant: revenirea trebuie s se fac de fiecare dat ntr-un alt punct,
deoarece saltul din programul principal poate s apar n orice punct al su.
Dac se dorete revenirea, este necesar ca programul principal s
transmit secvenei la care se sare o informaie, pe care aceasta s o
foloseasc pentru a relua execuia programului principal din punctul n care
a fost prsit. Informaia care se transmite este adresa instruciunii de dup
cea care a determinat prsirea programului principal, iar aceast
informaie se transmite prin intermediul stivei.
Instruciunea care realizeaz un salt la o adres dup ce n prealabil a
depus pe stiv adresa instruciunii imediat urmtoare din programul
principal se numete instruciune de apel i la 8085 este codificat n
limbaj de asamblare cu mnemonica CALL. Instruciunea care realizeaz o
revenire n programul principal, deoarece rencarc n PC adresa din vrful
stivei (cea salvat de CALL) se numete instruciune de revenire i la
8085 este codificat n limbaj de asamblare cu mnemonica RET.
Secvena de instruciuni care este apelat se numete subrutin.
Programul principal, care apeleaz subrutina se numete program apelant.
Formatul general al instruciunilor de apel i revenire este urmtorul:


Dup cum se poate observa, la fel ca i la instruciunile de salt, exist
instruciuni de apel i revenire necondiionate, precum i instruciuni de
apel
i revenire condiionate. Condiiile condition, care apar i n numele
instruciunilor, sunt codificate n limbaj de asamblare la fel ca la
instruciunile de salt condiionat:

Principalele caracteristici ale subrutinelor:
- O subrutin este o succesiune de instruciuni cu unul sau mai multe
puncte de intrare etichetate i cu unul sau mai multe puncte de ieire;
- Realizeaz o anumit funcie: operaii de I/E, conversii al formatului
datelor, operaii matematice n virgul fix sau mobil etc.;
- Poate fi apelat ori de cte ori este nevoie;
- Pentru ea se aloc memorie numai o singur dat;
- La terminare trebuie s se rentoarc n programul apelant, indiferent de
locul de unde este apelat (terminare cu instruciune de revenire);
- Poate primi parametri din programul apelant i i poate furniza rezultate
acestuia prin registre, prin stiv sau prin locaii fixe de memorie;
- Registrele modificate de subrutin trebuie s fie cunoscute programului
apelant, care trebuie s ia msurile necesare pentru salvarea
informaiilor care trebuie pstrate.
Pentru creterea lizibilitii codului surs, fiecare subrutin trebuie
documentat la definire, precizndu-i-se:
- numele i funcia ndeplinit;
- modul n care sunt primii parametrii de intrare;
- modul n care rezultatele sunt returnate programului apelant;
- registrele modificate n cadrul subrutinei.


ntreruperile microprocesorului 8085
Microprocesorul 8085A are integrat un controler de gestionare a
cererilor multiple pentru cele 5 linii distincte de ntrerupere accesibile la
pini.


n tabelul de mai sus se prezint numele acestor pini, adresele de
tratare a solicitrilor, prioritatea lor, modul de prezentare a cererilor, tipul
ntreruperilor i modul de utilizare a acestora n cadrul microsistemului
EMAC Universal Trainer din laborator.
Programul monitor rezident pe microsistem, fiind amplasat n memoria
EPROM (care ncepe de la adresa 0000h), este primul care intercepteaz
ntreruperile sosite pe primele 4 linii din tabel.
Cele prezentate pe linia INTR, la care este conectat un controler de
ntreruperi 8259A, pot fi amplasate oriunde n memorie, deoarece pentru a
ajunge la adresa de tratare controlerul de ntreruperi folosete instruciuni
de tip CALL addr.

ntreruperea nemascabil TRAP este tratat n programul monitor.
n varianta actual de monitor, programul utilizatorului nu poate
schimba rutina de tratare a ntreruperii nemascabile cu una proprie,
deoarece aceast ntrerupere este folosit n exclusivitate de monitor pentru
a opri execuia programului utilizatorului.
Linia de ntrerupere TRAP este nemascabil, adic cererile sunt
ntotdeauna servite de ctre microprocesor, la sfritul instruciunii curente,
oricare ar fi aceasta.
Celelalte 4 linii sunt mascabile, adic este posibil ca microprocesorul
s ignore cererile dac liniile de ntrerupere mascabile sunt inhibate la nivel
global (cu instruciunea DI Disable Interrupts) sau doar individual
(numai liniile RST x.5), cu instruciunea SIM - Set Interrupt Mask.
Dup resetare, sistemul de ntreruperi este inactiv. ntreruperile pot fi
validate individual (cu aceeai instruciune SIM) i global (cu instruciunea
EI Enable Interrupts) dac dorim s permitem tratarea lor de ctre
microprocesor.

Lucrul cu masti
Exemple ::
Daca avem un octet de biti : B7 B6 B5 B4 B3 B2 B1 B0 si vrem sa pastram doar bitii B3 B4 B5
putem folosi AND sau OR astfel :




-folosind AND : B7 B6 B5 B4 B3 B2 B1 B0
AND o sa rezulte
0 0 1 1 1 0 0 0
------------------------------------------------------------
0 0 B5 B4 B3 0 0 0
------------------------------------------------------------------------------------------------------------------------
-folosind OR : B7 B6 B5 B4 B3 B2 B1 B0
OR o sa rezulte
1 1 0 0 0 1 1 1
------------------------------------------------------------
1 1 B5 B4 B3 1 1 1
------------------------------------------------------------------------------------------------------------------------
Se observa ca folosind AND bitii de care nu mai avem nevoie ii fortam la 0, iar folosid OR acei
biti sunt fortati la 1.
- Pentru a nega o parte din bitii unui octet trebuie sa folosim XOR.
Exemplu : Pentru a nega bitii B5 B4 B3 din octetul anterior:

B7 B6 B5 B4 B3 B2 B1 B0
XOR o sa rezulte
0 0 1 1 1 0 0 0
------------------------------------------------------------
B7 B6 B5B4B3 B2 B1 B0
Unde B5 inseamna B5 negat.
Pe scurt putem spune ca XOR cu 0 lasa bitul la fel , in timp ce XOR cu 1 il neaga.
IN concluzie mastile sunt siruri de biti 0 sau 1 cu ajutorul carora putem manipula un octet de
biti , pastrand doar datele de care avem nevoie.
De exemplu : 0 0 1 1 1 0 0 0 este o masca cu ajutorul carei putem sa
negam bitii B5 B4 B3 ( folosind XOR) dar putem de asemenea sa pastram bitii B5 B4 B3 iar pe
restul sa ii fortam la 0 ( folosind AND).

S-ar putea să vă placă și