Sunteți pe pagina 1din 12

BAZELE PROGRAMRII CALCULATOARELOR 9

SISTEMUL DE DEZVOLTARE. ARHITECTURA


GENERAL A MICROPROCESORULUI 8085.
1. Obiective
Prin parcurgerea acestei edine de laborator studenii vor fi capabili:

S nvee structura intern i modul de funcionare al microprocesorului 8085.


S enumere resursele hardware ale microsistemului;
S explice modul de lucru al monitorului rezident n memoria ROM;
S utilizeze facilitile de operare local ale microsistemului;
S foloseasc facilitile de operare de la distan.

2. Arhitectura microprocesorului 8085


Principalele blocuri interne ale microprocesorului 8085 sunt prezentate n Figura 1:
Comand ntreruperi i I/O
seriale

ntreruperi

I/O seriale

Magistral intern (8 bii)

Acumulator
A (8 bii)

Registru
temporar
(8 bii)

Bistabile
condiii
(5 bii)

Registru
instruciune
(8 bii)

UAL
Decodificator
instruciune

B(8)
C(8)
D(8)
E(8)
H(8)
L(8)
SP(16)
PC(16)
Latch i increm/
decrem adres

Corecie
zecimal

Bloc de secveniere i comand

Sincronizare

Iniializare

Control

Buffer adrese/date

Adrese/date

Figura 1. Schema bloc intern simplificat a microprocesorului 8085

162

BAZELE PROGRAMRII CALCULATOARELOR 9


3. Unitatea aritmetico-logic
Unitatea aritmetico-logic execut operaiile aritmetice i logice ntre maxim doi
operanzi ntregi fr semn reprezentai pe 8 bii. n mod obligatoriu unul dintre operanzi trebuie s
fie n registrul A, iar cellat, dac exist, ntr-un registru temporar. Registrul A va stoca la final
rezultatul operaiei i de aceea este denumit i registru 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, cel mai semnificativ bit 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).
Starea acestor indicatori poate influena modul de desfurare i rezultatul unor instruciuni
aritmetice i de ramificare condiionat.
Acumulatorul, mpreun cu flagurile formeaz cuvntul de stare al procesorului (PSW processor
status word).
=

4. Registrele interne i magistralele externe


4.1. Registrele interne
Registrele generale B, C, D, E, H i L sunt 6 registre de lucru de 8 bii. Acestea pot fi
folosite pentru memorarea datelor i rezultatelor intermediare ale programului. Sunt accesibile
programului prin instruciuni adecvate, att ca registre simple de 8 bii, ct i n perechi, ca registre
extinse de 16 bii:
B i C (sau registrul extins B);
D i E (sau registrul extins D);
H i L (sau registrul extins H).

Registrul instruciunii primete opcodul instruciunii curente i l menine pe ntreaga


durat de execuie a instruciunii.
Registrele speciale au 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.

163

BAZELE PROGRAMRII CALCULATOARELOR 9


4.2.

Magistralele externe

Magistrala sistemului (MS) este magistrala la care se conecteaz toate celelalte componente
pentru a schimba informaii ntre ele. Aceasta este format din:
Magistrala de adrese (MA) grupul de linii unidirecionale, prin care coordonatorul
sistemului indic locaia de memorie sau portul de intrare/ieire la care dorete s aib
acces;
Magistrala de date (MD) grupul de linii bidirecionale, pe care circul informaia
(instruciuni i date) ntre componentele sistemului;
Magistrala de control (MC) liniile uni sau bidirecionale cu rolul de a:
Stabili tipul de acces pe magistala sistemului:
o Selecia spaiului de adresare (memorie sau porturi I/E);
o Controlul sensului de transfer pe magistrala de date (citire sau scriere);
Sincroniza microprocesorul cu dispozitivele externe mai lente (wait);
Realiza dialogul dintre microprocesor i dispozitivul I/E care solicit ntreruperi;
Realiza dialogul dintre microprocesor i un alt controller care dorete accesul la
magistrala sistemului (DMA Direct Memory Access).
Magistrala sistemului este controlat n mod inplicit de ctre microprocesor, care depune adresa
pe magistrala de adrese i activeaz liniile de control ale magistralei de control, n funcie de
operaia pe care o execut la un moment dat.

5. Modul de execuie al instruciunilor


Pentru a realiza execuia unei instruciuni microprocesorul:
- depune adresa instruciunii pe magistrala de adrese;
- activeaz semnalele de citire a memoriei;
- citete codul instruciunii din memorie pe magistrala de date;
- decodific instruciunea
- execuia propriu-zis a instruciunii constituit din:
operaii interne: aritmetice, logice, de control a strii microprocesorului;
operaii pe magistral: transfer de operanzi pe magistrala de date.
Pentru citirea unui operand microprocesorul:
- depune adresa operandului pe magistrala de adrese;
- activeaz semnalele de citire memorie sau dispozitivul I/E;
- citete operandul din memorie pe magistrala de date.
Pentru scrierea unui operand microprocesorul:
- depune adresa operandului pe magistrala de adrese;
- depune operatorul pe magistrala de date.

164

BAZELE PROGRAMRII CALCULATOARELOR 9


6. Placa de dezvoltare (EMAC Universal Trainer)

Figura 2. Schema plcii de dezvoltare

165

BAZELE PROGRAMRII CALCULATOARELOR 9


7. Resursele hardware ale sistemului cu microprocesor

24

18 16 17 19

25

26

14

10
8

12
15

31

32

27

9
28
11
29

13

13

33
30
34
20 21 22 23

35

37
36

Figura 3. Principalele componente ale microsistemului

Muf
alimentare

Muf port paralel

Mufe port serial

Comutator
bipoziional

- de conectare (ON) / deconectare (OFF) a alimentrii

Microprocesorul

- 80C85;

Memoria ROM

- de 32 Koctei, la nceputul creia se afl nscris monitorul


rezident ce permite operarea local i de la distan;
- locaiile de memorie RAM 8000hFF00h sunt la dispoziia (6)
utilizatorilor, pentru ncrcarea i execuia programelor
acestora;

de - premite alimentarea de la o surs de tensiune extern de cel


puin 7V c.c.;
(1)
(2)
(3)
(4)
(5)

166

BAZELE PROGRAMRII CALCULATOARELOR 9


- zona de memorie RAM FF00hFFFFh nu trebuie
modificat;

Memoria RAM

- de 32 Koctei, din care ultimele 256 de


locaii
(FF00hFFFFh) sunt folosite de ctre monitorul rezident;
(7)

Circuitul
programabil
timp (Timer)

- cu 3 canale de timp, din care unul poate comanda un difuzor;


de

Interfaa paralel

Controlerul pentru
portul paralel

(8)
- cu 3 porturi de 8 bii:
(9)
A - comand un set de 8 led-uri de stare (D56D63) (40H); (10)
B - conectat la 8 comutatoare DIP (S2),
(11)
Starea comutatoarelor este afiat i pe leduri (D48D55)
(41H);
(10)
(12)

Circuitele
de - pentru dou canale de comunicaie serial RS232: COM1 i
COM2 (COM1 este folosit de monitorul rezident);
(13)
interfa serial

Controlerul
ntreruperi

Controler pentru
afiaj i tastatur
Butoane
de RST
iniializare

de - cu 8 linii de ntrerupere, conectat la linia INTR a


microprocesorului;
(14)

TRP

INT7.5
INT0

(15)
- reseteaz microsistemul, astfel nct, indiferent
n de starea sa, monitorul rezident repornete,
similar cazului de conectare a alimentrii;
- determin apariia unei ntreruperi nemascabile
(care
este
acceptat
necondiionat
de
microprocesor), nsmennd ncetarea activitii
curente a microsistemului i reintrarea n bucla de
ateptare de comenzi;
- aceast comand este util pentru a ntrerupe n
orice moment execuia unui program al
utilizatorului, pentru a examina starea
registrelelor sau pentru a vedea unde s-a blocat;
- permit generarea manual a altor tipuri de
ntreruperi i rolul lor va fi examinat n detaliu
ntr-o lucrare ulterioar.

(16)

(17)

(18)
(19)

HSS EN Hardware Single Step Enable Activare execuie


(20)
pas cu pas

167

BAZELE PROGRAMRII CALCULATOARELOR 9

Butoane i logic INS


HW
pentru FET
execuia pas cu pas ALL
R/W
HSS
D7-D38

Led-uri

D48D63

Difuzor

Display
numeric

Se oprete dup fiecare instruciune


Se oprete dup fiecare cod
Execuie pas cu pas

(21)
(22)
(23)

- pentru vizualizarea strii magistralelor:


D7-D22 pentru magistrala de adrese (A15-A0);
D23-D30 pentru magistrala de date (D7-D0);
D31-D38 pentru comenzi (R, W, etc.);
- pentru vizualizarea porturilor I/O:

(24)
(25)
(26)
(27)

D48-D55 - pentru intrri;


D56-D63 - pentru ieiri;

(28)
(29)
(30)

alfa(31)

Tastatura
hexazec
PC
RUN
ENT
DEC

0, 1,..., 9, A,...,F
Program Counter
- lanseaz n execuie
- incrementeaz adresa
- decrementeaz adresa

(32)
(33)
(34)
(35)
(36)
(37)

nainte de alimentarea cu tensiune i pornirea microsistemului, se verific dac toi


jumperii se afl n poziiile corecte, aa cum se indic n figura 3. Nu se vor face niciodat
modificri n configuraia jumperilor n timp ce microsistemul se afl sub tensiune.
Microsistemul are o construcie robust, dar asta nu nseamn c n anumite condiii nu
poate fi deteriorat. El este special proiectat pentru a fi foarte deschis, astfel nct s se observe clar
starea anumitor componente de semnalizare i aceasta s fie uor de interpretat de ctre utilizator.
De aceea, se va avea grija ca pe plac s nu ajung obiecte metalice sau fire conductoare
neizolate.
Dup introducerea mufei jack i acionarea comutatorului S1 (POWER) pe poziia ON, n
cmpul ADRESA al afiajului apare adresa iniial din PC-ul utilizatorului local (8001), iar n
cmpul DATA - valoarea din memorie de la aceast adres. De asemenea, n difuzor se va auzi un
ir de tonuri specifice, semn c microsistemul s-a iniializat cu succes i ateapt comenzi.

168

BAZELE PROGRAMRII CALCULATOARELOR 9


8. Aplicaii de conectare a plcii la un calculator i de examinare a
coninutului memoriei cu monitorul NoICE
Se consider secvena de instruciuni introduse n memorie ncepnd cu adresa A000.
Adresa Cod main Cod surs
A001
DB 41
IN 41
A002
CMA
2F
A004
D3 40
OUT 40
A005
HLT
76
Se observ marcat cu rou opcodul instruciunii n cod main. Acesta este urmat de o constant
care este fie o adres fie o valoare numeric. La execuia secvenei de instruciuni registrul PC ia
urmtoarele valori: A000, A001, A002, A003, A004 i A005.

9. Programarea microprocesorului 8085


Un fiier surs n limbaj de asamblare pentru ASM85 poate s conin una sau mai multe
linii de cod surs. O linie de cod surs are urmtorul format:

<etichet> [:] <instruciune> <operanzi> [;] <comentariu>


n oricare din cmpurile menionate mai sus se pot utiliza att litere mici ct i majuscule
n orice combinaie, asamblorul nefiind case sensitive.
Eticheta este opional, ea reprezint un nume simbolic dat adresei la care se va stoca
instruciunea urmtoare. n cazul n care folosim eticheta, aceasta trebuie s fie localizat fix la
nceputul liniei din codul surs. Opional, dup etichet poate s urmeze caracterul : (dou
puncte). Eticheta trebuie separat de cmpul care urmeaz prin cel puin un (spaiu) sau
(Tab). Pentru a pstra compatibilitatea cu alte asambloare eticheta va fi ntotdeauna
urmat de caracterul :.
Cmpul aferent instruciunii poate fi amplasat pe aceeai linie cu eticheta sau pe linia
urmtoare. n cazul n care nu exist o etichet, instruciunea nu trebuie plasat pe prima coloan,
ci trebuie s fie precedat de cel puin un spaiu sau un Tab. Dac instruciunea are operanzi, acetia
trebuie separai de numele instruciunii printr-un spaiu sau un Tab. n cazul n care instruciunea
are mai muli operanzi, acetia vor fi separai prin , (virgul).
Cmpul opional dedicat comentariului trebuie s fie separat de operanzi prin cel puin un
spaiu sau un Tab i trebuie specificat prin ; (punct i virgul) la nceputul comentariului pentru
a pstra compatibilitatea cu alte asambloare.

169

BAZELE PROGRAMRII CALCULATOARELOR 9


9.1.

Instruciunea de iniializare

n categoria registrelor care pot fi iniializate regsim registrele: A, B, C, D, E, H i L.


Formatul general al instruciunii de iniializare este:
MoVe
Immediate
0 0 d d d 1 1 0
8
data data8 to register r
data8
n limbaj de asamblare, aceast instruciune are doi operanzi i semnificaia c n registrul r se
nscriu datele din data8. n limbaj main, instruciunea are doi octei, poziionai n memorie la
adrese consecutive. Primul octet reprezint codul operaiei i cuprinde o serie de bii fixai care
reprezint codul operaiei i trei bii (ddd) care codific registrul folosit de instruciune (registrul
destinaie) astfel:
MVI r,data8

r
ddd

B
000

C
001

D
010

E
011

H
100

L
101

110

A
111

Cel de-al doilea octet al instruciunii este reprezentat de o valoare numeric pe 8 bii care este
ncrcat n registrul specificat de opcod.
n limbajul de asamblare ASM85, un astfel de operand poate fi exprimat printr-o constant
numeric, o constant simbolic a crei valoare a fost definit n cadrul fiierului surs sau printro expresie aritmetic sau logic cu constante numerice i/sau simbolice.

9.2.

Instruciuni de intrare ieire

n cazul microprocesorului 8085, adresarea porturilor (I/O) se face pe 8 bii, deci adresa
unui port poate s fie cuprins ntre 00h i FFh. Transferul I/O se realizeaz prin intermediul
registrului A astfel: starea unui port de intrare (I) poate fi ncrcat numai n A, iar comanda unui
port de ieire (O) se poate face numai cu octetul din A. Vorbim n acest caz de adresarea implicit.
Formatul general al instruciunilor de intrare-ieire este prezentat n cele ce urmeaz:
Input from port ()
= 00
OUT port Output to port ()
= 00
IN port

170

BAZELE PROGRAMRII CALCULATOARELOR 9


9.3.

Instruciuni de salt

9.3.1. Instruciunea de salt necondiionat JMP


Orice modificare a registrului PC modific ordinea de execuie a instruciunilor i este
echivalent cu un salt n program. Instruciunea care modfic registrul PC se numete JMP (jump)
i are urmtoarea form general:
JMP addr JuMP to address
Primul operand al instruciunii nu este menionat, acesta fiind implicit registrul PC. Cel de-al
doilea operand care este specificat, precizeaz adresa instruciunii care se va executa dup JMP,
adic adresa de memorie la care se face saltul. Saltul la adresa specificat se execut indiferent de
starea curent a programului (regitre i indicatori de condiii).

9.3.2. Instrucuiuni de salt condiionat


Formatul general al unei instruciuni de salt condiionat este urmtorul:
Jcondition addr Conditional JuMP to address ( == )

+ 3
n cazul n care condiia precizat condition este adevrat, se execut un salt la adresa precizat
n instruciune , prin ncrcarea ei n registrul PC. n cazul n care condiia este fals, se continu
cu instruciunea urmtoare.
Corespondenele dintre condiie i codul acesteia sunt ilustrate n cele ce urmeaz:
Condiia Descriere

Condiia este CCC


adevarat
dac
Not
Zero

rezultatul
este
diferit
de
0;
000
NZ
=0
Zero rezultatul este egal cu 0;
001
Z
=1
Not Carry operaia nu a produs transport/mprumut;
010
NC
= 0
Carry operaia a produs transport/mprumut.
011
C
= 1
Cu ajutorul acestor instruciuni pot fi scrise structuri de program de tip ramificare simpl (if...else)
sau multipl (switch...case), dar i structuri de program repetitive/ bucle cu numr de pai cunoscut
(for), cu test iniial (while) sau cu test final (do...while).
Simbolul predefinit $ poate fi folosit n orice instruciune pentru a ne referi la adresa acelei
instruciuni. De aceea utilizarea ei ntr-o instruciune de salt face ca microprocesorul s execue
continuu aceeai instruciune de salt la infinit.

171

BAZELE PROGRAMRII CALCULATOARELOR 9


10. Aplicaii propuse
10.1. S se scrie n memorie urmtoarea secven de cod:
A001
A002
A004
A005

DB 41
2F
D3 40
76

IN 41
CMA
OUT 40
HLT

PC

A000:
A001:
A002:
A003:
A004:
A005:

DB
41
2F
D3
40
76

S se precizeze opcodul fiecrei instruciuni i operanzii dac este cazul.

10.2. S se scrie n memorie un program care rotete la dreapta un led i ilustreaz procesul
pe portul de ieire.
Indicaie

172

BAZELE PROGRAMRII CALCULATOARELOR 9


a) De ce a fost iniializat registrul A cu valoarea 01h?
b) Ce se observ la lansarea n execuie?
c) S se execute pas cu pas secvena de instruciuni astfel: cu oprire dup fiecare instruciune
i cu oprire dup fiecare cod.
d) Cte apsari ale butonului HSS sunt necesare n primul caz? Dar n cel de-al doilea?

10.3. S se completeze codul de la problema 10.2. prin introducerea unui delay n program
astfel nct rotirea ledului s poat fi observat fr a utiliza execuia pas cu pas.
Indicaie

11. Referine bibliografice


[1] C.Huanu, M.Postolache, Sisteme cu microprocesoare, Editura Academic, Iai, 2001.
[2] Gh.Toace, Introducere n microprocesoare, Editura tiinific i Enciclopedic,
Bucureti, 1985.
[3] ***, Universal Trainer, Lab Manual for Board Revisions R1 and R2, EMAC INC, 1993.
[4] ***, Universal Trainer, Reference Manual, EMAC INC, 1993.
[5] ***, Universal Trainer, Self Instruction Manual, EMAC INC, 1992.

173

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

  • BPC l91
    BPC l91
    Document12 pagini
    BPC l91
    StefaniaArdelianu
    Încă nu există evaluări
  • Logica Computationala-Cartea
    Logica Computationala-Cartea
    Document138 pagini
    Logica Computationala-Cartea
    dcswalle
    Încă nu există evaluări
  • BPC l12
    BPC l12
    Document9 pagini
    BPC l12
    StefaniaArdelianu
    Încă nu există evaluări
  • BPC l11
    BPC l11
    Document11 pagini
    BPC l11
    StefaniaArdelianu
    Încă nu există evaluări
  • BPC l10
    BPC l10
    Document9 pagini
    BPC l10
    StefaniaArdelianu
    Încă nu există evaluări
  • BPC l7
    BPC l7
    Document31 pagini
    BPC l7
    StefaniaArdelianu
    Încă nu există evaluări
  • BPC l2
    BPC l2
    Document13 pagini
    BPC l2
    StefaniaArdelianu
    Încă nu există evaluări
  • BPC l1
    BPC l1
    Document16 pagini
    BPC l1
    StefaniaArdelianu
    Încă nu există evaluări
  • BPC l5
    BPC l5
    Document25 pagini
    BPC l5
    StefaniaArdelianu
    Încă nu există evaluări
  • BPC l3
    BPC l3
    Document30 pagini
    BPC l3
    StefaniaArdelianu
    Încă nu există evaluări