Descărcați ca pdf sau txt
Descărcați ca pdf sau txt
Sunteți pe pagina 1din 24

ndrumar de laborator 1

INTRODUCERE N STUDIUL
MICROSISTEMELOR LECTRONICE
1. Obiectul lucrrii
Lucrarea i propune o introducere n studiul sistemelor cu microprocesorul
Z80. Sunt descrise componentele microsistemului i rolul acestora. Se introduc
comenzile programului monitor, prin intermediul cruia se acioneaz n mod
direct asupra microsistemelor existente n laborator. Este prezentat ansamblul de
programe tip mediu de dezvoltare IAR Systems Embedded Workbench i
comenzile de baz pentru depanarea i simularea programelor n limbaj de
asamblare sau realizarea de programe n limbaj de nivel nalt. Lucrarea propune i
o scurt recapitulare a sistemelor de numeraie binar i hexazecimal. n final sunt
prezentai regitrii de lucru pentru microprocesorul Z-80.

2. Breviar teoretic
2.1. Elemente generale

Un microsistem de calcul este compus din urmtoarele elemente:


1. Unitatea central (UC), cu rol de comand i control a ntregii structuri.
La microsistemele de calcul aceasta este realizat de obicei n jurul unui
microprocesor. El poate forma unitatea central singur sau mpreun cu alte
circuite.
2. Circuitele de memorie, respectiv circuitele de decodificare i selecie
aferente:
- memorii ROM - nevolatile - pentru pstrarea programelor rezidente
permanent n microsistem. Tehnologic acestea pot fi memorii ROM OTP (one
time programming) EPROM, EEPROM, FLASH, etc.;
- memorii RAM pentru pstrarea programelor utilizator; la dispariia
tensiunii de alimentare informaia stocat n acest tip de memorii se pierde.
Memoriile RAM pot fi de tipul Static RAM (SRAM) sau Dinamic RAM (DRAM).
3. Circuitele specializate de intrare - ieire ( input - output, I/O),
respectiv circuitele de decodificare i selecie aferente; prin intermediul acestor
circuite (cuploare) sunt gestionate echipamentele periferice.
4. Echipamentele periferice; prin intermediul echipamentelor periferice,
un microsistem de calcul se interfaeaz cu mediul exterior, inclusiv cu operatorul
uman.

ndrumar de laborator 1
BLOC MEMORIE
DCD
MA
UC

MD
MC
DCD
BLOC CIRCUITE
I/O

ECH. PERIF.
ECH. PERIF. N
ECH. PERIF. I/O

5. Magistralele informaionale. Elementele microsistemului comunic


prin intermediul unor magistrale. O magistral este constituit dintr-un mnunchi
de fire pe care se vehiculeaz semnale avnd aceleai semnificaii logice. n mod
uzual sunt trei categorii de magistrale:
- magistrala de adrese (MA) conine informaii emise de unitatea
central n vederea adresrii locaiilor de memorie i a circuitelor de intrare - ieire.
Prescurtat, acest tip de informaii se numesc adrese. n anumite situaii particulare,
rolul de generare al semnalelor de adres nu mai revine unitii centrale. De
exemplu, n cazul folosirii circuitelor DMA (direct memory access), rolul generrii
adreselor revine acestor circuite.
- magistrala de date (MB) conine liniile fizice pe care se vehiculeaz
informaiile propriu-zise. Prescurtat, acest tip de informaii se numesc date.
Magistrala de date este bidirecional. Sensul de parcurgere al magistralei poate fi
de la procesor la circuitele I/O sau memorii, atunci cnd unitatea central
efectueaz operaii de scriere, sau de la memorie sau circuitele I/O ctre procesor,
n situaia efecturii operaiilor de citire de ctre UC. n situaii particulare, datele
pot s circule ntre circuitele de intrare - ieire i memorii, fr a se mai trece prin
unitatea central (cazul transferurilor DMA).
- magistrala de comenzi (MC) conine semnale prin care procesorul se
sincronizeaz n funcionare, cu elementele externe. Ea nu este o magistral
bidirecional propriu-zis, ci conine semnale care sunt generate de unitatea
central i, respectiv, semnale care sunt recepionate de aceasta. Prin intermediul
semnalelor din cadrul acestei magistrale se gestioneaz transferul de date ntre
unitatea central i resursele microsistemului (memorii i circuite de I /O ).
Numrul de linii din cadrul magistralei de adrese indic numrul de locaii
de memorie ce pot fi adresate de ctre procesor. De exemplu, dac numrul de linii
este 14, numrul locaiilor adresate este 214 = 16k, unde 1k = 210 . Pentru alte

ndrumar de laborator 1

numere de linii n cadrul magistralei de adrese se obin urmtoarele capaciti de


adresare:
16 linii
216 = 64k
20 linii
220 = 1M
24 linii
224 = 16M
De remarcat faptul c informaia de adres se aplic att circuitelor de
memorie ct i celor de I/O. Selecia propriu-zis a unuia din cele dou tipuri de
circuite revine unor semnale din cadrul magistralei de comenzi.
Mrimea magistralei de date (numrul de linii cuprinse) constituie o
caracteristic a microsistemului, indicnd mrimea operanzilor care sunt transferai
ntre procesor i memorie sau circuitele I/O. De obicei, acest numr indic i
dimensiunea n bii a operanzilor procesai direct de unitatea central, practic
puterea de calcul a procesorului.
Cu ct mrimea magistralei de date este mai mare, cu att puterea de calcul
a procesorului este mai mare. Magistrala de date este comun tuturor resurselor
sistemului. Datorit acestui lucru, circuitele conectate la magistral trebuie s
posede etaje de ieire de tipul tristate (TS). Printr-o logic de activare i selecie
trebuie luate msuri pentru c n cazul depunerilor de informaii pe magistrala de
date s se activeze un singur circuit. Altfel, dac se activeaz simultan dou sau
mai multe circuite, se pot produce scurtcircuite i datele sunt alterate. Selecia se
realizeaz prin intermediul unor semnale din magistrala de control.
Memoria de tip ROM nu primete date din cadrul magistralei de date, ea
transmind doar date ctre microprocesor. n acest sens, proiectantul
microsistemului trebuie s prevad circuite care s asigure protecia la eventualele
ncercri accidentale de scriere n memoriile ROM. La memoria de tip RAM,
precum i la circuitele I/O, astfel de precauii nu trebuie luate, datele putnd fi
transmise pe magistrala de date, n raport cu unitatea central, n ambele sensuri.

2.2 Structura microsistemului cu microprocesor Z-80


Structura microsistemului cu microprocesor Z-80 este prezentat n schema
bloc din figura 1. Unitatea central este format din microprocesorului Z-80. Pe
lng aceasta sunt prezente urmtoarele elemente: circuite aferente pentru logica
de control, logic de reset, memorie EPROM n care este nscris programul
MONITOR i programele de tip utilizator, memorie RAM pentru salvarea
variabilelor n timpul rulrii programelor. Pe macheta de laborator se mai gsesc
dispozitive specializate de intrare-ieire pentru comunicaia serial (Z-80 SIO),
comunicaie paralel (Z-80 PIO), dispozitiv temporizator/numrtor (Z-80 CTC).
Pentru asigurarea unei interfee cu utilizatorul ct mai complete, au mai fost ataate
un afiaj LCD, un buzzer, dou leduri i un buton acestea fiind de uz general,
comandate prin program.

ndrumar de laborator 1

ndrumar de laborator 1

3.1. Programul MONITOR


Programul monitor permite utilizatorului accesul la resursele hardware ale
microsistemului printr-un set simplificat de comenzi. Comenzile descrise n
continuare sunt specifice microsistemelor din cadrul laboratorului, realizate n jurul
unor microprocesoare Z-80. Astfel, prin aceste comenzi se pot realiza :
- afiarea, la ecranul display-ului, a coninutului unei zone de
memorie, ntre dou adrese;
- umplerea unei zone de memorie cu o constant;
- mutarea unei zone (bloc) de memorie ntr-o alt zon de memorie;
- compararea coninutului a dou zone de memorie cu semnalizarea
diferenelor;
- efectuarea de operaii simple (adunare i scdere) n hexazecimal;
- vizualizarea locaie cu locaie a coninutului memoriei cu
posibilitatea modificrii individuale;
- afiarea regitrilor P-ului cu posibilitatea modificrii coninutului
acestora;
- rularea programelor utilizatorilor .
La iniializarea microsistemului, pe ecranul display-ului (la calculatorul
PC) apare un mesaj prin care se indic utilizatorului faptul c acesta este gata de
lucru. De fapt, are loc n prealabil o autoverificare a integritii hardware i dac
aceasta este trecut cu succes se afieaz mesajul menionat. Este afiat n
continuare prompter-ul (n cazul nostru, semnul > ), care invit utilizatorul la
introducerea comenzilor. O comand se va putea introduce doar dup afiarea
prompterului, prin tastare n dreapta acestuia. Totodat se afieaz i cursorul (ce
indic poziia curent pe ecranul display-ului ) printr-o liniu de subliniere
(underline) ce flash-eaz (clipete).
OBSERVAIE. Se atrage atenia asupra faptului c toate informaiile
introduse de la tastatur i, respectiv, afiate pe display sunt n sistemul de
numeraie hexazecimal.
Programul care realizeaz interfaa dintre microsistem i utilizator, rulat pe
calculatorul PC se numete TERMINAL.EXE. El asigur afiarea i transmiterea
caracterelor n codul ASCII pe portul serial. Dup lansarea n execuie a acestui
program trebuie configurat dup cum este artat n figura 2. Activarea comunicaiei
ntre microsistem i calculator se face prin apsarea butonului Conectare.

Fig. 2. Configurarea programului Terminal.exe

ndrumar de laborator 1

Setul de comenzi ale programului monitor


a) DISPLAY - prezentarea pe display a coninutului memoriei
La prompter se tasteaz:
> Dxxxx, yyyy <CR> sau > D xxxx yyyy <ENTER>
unde
xxxx = adresa de nceput a zonei de memorie ce se vizualizeaz (n
hexazecimal);
yyyy = adresa de sfrit a aceleiai zone (n hexazecimal); trebuie s avem
xxxx < yyyy ;
CR = carriadge return.
Ca efect al comenzii, pe ecranul display-ului apare coninutul cutat. De fapt, se
prezint un tabel avnd pe prima coloan informaia de adres (patru digii), iar pe
urmtoarele 16 coloane, date, fiecare pe cte doi digii hexa, separate prin blank.
Mai jos este dat un exemplu n care se face afiarea zonei de memorie de la
adresa 100h la 120h

Observaii valabile pentru toate comenzile programului monitor:


1. O adres se introduce printr-un grup de patru digii n format
hexazecimal. Dac digiii cei mai semnificativi ai informaiei de adres sunt 0, ei
pot fi omii. Programul monitor ia n considerare doar ultimii patru digii introdui.
Nu exist tasta de tergere (delete). De fapt, programul monitor nu o trateaz. n
cazul unei tastri incorecte se reia tastarea pn cnd ultimii patru digii introdui
sunt coreci, fr a face nici o pauz. Existena a patru digii n format hexazecimal
pentru adres se explic prin mrimea magistralei de adrese la microprocesorul Z80 (16 bii).
2. Virgula este caracter separator ntre diferitele cmpuri ale comenzii. n
acelai scop se poate folosi caracterul space (blank).
3. O dat se introduce printr-un grup de doi digii n format hexazecimal.
Dac digitul cel mai semnificativ al informaiei de date este 0 el poate fi omis.
Programul monitor ia n considerare doar ultimii doi digii introdui. Ca i pentru
informaia de adres, nu exist tasta de tergere. n cazul unei tastri incorecte se
reia tastarea pn cnd ultimii doi digii introdui sunt coreci, fr a se face nici o
pauz. Existena a doi digii n format hexazecimal pentru dat se explic prin
mrimea magistralei de date la microprocesorul Z-80 (8 bii).

ndrumar de laborator 1

4. Practic, orice comand a programului monitor se termin prin tastarea


caracterului terminator (CR sau Enter sau Return). Execuia comenzii introduse
este condiionat de aceast tastare.
5. Comenzile se introduc doar prin folosirea majusculelor (capitals). n
acest sens se recomand apsarea tastei CAPS LOCK.
b) FILL - umplerea unei zone de memorie cu o constant.
Comanda este posibil doar atunci cnd se aplic unei zone de memorie RAM.
>Fxxxx, yyyy, zz <CR>
unde
xxxx = adresa de nceput a zonei;
yyyy = adresa de sfrit a zonei; trebuie s avem xxxx < yyyy ;
zz = data (constanta) cu care se umple zona respectiv.
Dac se aplic comanda unei zone de memorie ROM, mecanismele de protecie
hardware existente n microsistem nu fac posibil scrierea, comanda neavnd nici
un efect.
Dup o execuie a comenzii se afieaz un nou prompter, fiind necesar o
comand DISPLAY pentru a vedea efectul produs.
c) MOVE - mut o zon de memorie, cuprins ntre dou limite, ntr-o nou zon
de memorie ce ncepe cu o adres specificat.
>Mxxxx, yyyy, zzzz <CR>
unde xxxx = adresa de nceput a primei zone;
yyyy = adresa de sfrit a primei zone; trebuie s avem xxxx < yyyy;
zzzz = adresa de nceput a noii zone de memorie; aceast zon trebuie s
fie una de tip RAM pentru efectuarea cu succes a comenzii; nu este necesar
precizarea adresei de sfrit a acestei zone; zona n care se face mutarea poate fi
aezat indiferent de poziia n memoria microsistemului a primei zone. Dup
execuie, se afieaz un nou prompter, efectul comenzii putndu-se observa prin
execuia unei comenzi DISPLAY.
d) COMPARE - compar o zon de memorie, cuprins ntre dou adrese limit, cu
o alt zon de memorie creia i se precizeaz adresa de nceput, semnaliznd
eventualele diferene ce apar ntre ele.
>Cxxxx, yyyy, zzzz <CR>
unde xxxx = adresa de nceput a primei zone ;
yyyy = adresa de sfrit a primei zone; trebuie s avem xxxx < yyyy;
zzzz = adresa de nceput a zonei de memorie cu care se face comparaia;
nu este necesar precizarea adresei de sfrit a acestei zone; zona cu care se face
comparaia poate avea orice poziie n raport cu plasarea n memoria
microsistemului, a primei zone.
Dac zonele comparate sunt identice se afieaz un nou prompter. Dac apar
diferene se prezint ntr-un tabel, adresele din prima zon unde exist

ndrumar de laborator 1

neconcordane, precum i cele dou date diferite (din prima i, respectiv, a doua
zon).
e) SUBSTITUTE - permite vizualizarea i modificarea coninutului memoriei,
locaie cu locaie.
Modificarea este posibil doar dac zona de memorie asupra creia se aplic
comanda este una de tip RAM. Vizualizarea este posibil indiferent de tipul zonei
de memorie.
Tastarea acestei comenzi prezint cteva variante, ea fiind interactiv cu
operatorul. Se ncepe prin tastarea literei S urmat de adresa de la care se dorete
vizualizarea i eventual modificarea. Dup adres se apas tasta blank ( space ).
Microsistemul rspunde reafind adresa introdus anterior ( xxxx ), urmat fiind
de semnul : i de coninutul respectivei locaii de memorie ( yy ). Se afieaz
apoi o liniu de desprire ( - ). Liniua are semnificaia interogrii operatorului
asupra modificrii respectivului coninut. Dac acesta dorete modificarea
introduce noua dat ( zz ). Dac nu, are dou variante de continuare la dispoziie.
n prima, poate s apese tasta blank (space), trecndu-se astfel la adresa imediat
urmtoare (xxxx + 1), cu afiarea coninutului acesteia i lsnd coninutul locaiei
anterioare nemodificat. Lucrnd astfel, se va putea vizualiza i modifica coninutul
memoriei pas cu pas ( locaie cu locaie). n a doua variant de continuare, poate s
apese tasta CR (enter, return), comanda lund sfrit i afindu-se un nou
prompter.
>Sxxxx xxxx : yy - zz xxxx +1 : uu - vv ........ <CR>
unde
xxxx
= adresa locaiei;
yy, uu = datele memorate n locaiile indicate;
= liniua de dialog cu operatorul;
zz , vv = datele modificate;
Dac nu se dorete modificarea locaiei se apas tasta blank. Cu caractere italice
(aplecate) este prezentat rspunsul microsistemului .
f) EXAMINE - Afiarea i modificarea regitrilor microprocesorului. Comanda are
mai multe variante.
n forma urmtoare permite afiarea coninutului tuturor regitrilor
microprocesorului :
> X <CR>
Pe linia urmtoare, la display, apare coninutul tuturor regitrilor
microprocesorului:

ndrumar de laborator 1

ntr-o a doua form de tastare a comenzii se poate face i modificarea


coninutului registrului dorit. Spre exemplu pentru modificarea coninutului
registrului B se tasteaz :
>XB bb - mm <CR>
unde
bb = vechiul coninut al registrului ,
mm = noul coninut (modificat) al registrului
Ca i la comanda S(ubstitute) sunt posibile dou variante de continuare.
Apsnd blank (space) se trece la vizualizarea i, eventual, modificarea
coninutului urmtorului registru. Dac modificarea nu se dorete, se apas blank
(space) trecndu-se la registrul urmtor. ntr-o a dou variant, apsarea tastei CR
(return, enter) va provoca sfritul comenzii i afiarea unui nou prompter.
g) GO - Comand de rulare a programelor. Comanda se deruleaz doar dac
anterior n memoria microsistemului s-a depus un program corect, prin folosirea
comenzii S(ubstitute).
>Gxxxx <CR>
Este lansat n execuie programul scris de utilizator de la adresa xxxx
Comanda microsistemului trece n totalitate ctre acest program, cu ieirea de sub
controlul programului monitor.
O alt form a acestei comenzi este :
>Gxxxx, yyyy <CR>
Aceast comand determin rularea programului utilizator de la adresa de
nceput xxxx pn la cea de sfrit yyyy. Pe timpul execuiei programului,
controlul microsistemului revine programului utilizator. Dup sfritul acestei
rulri controlul UC-ului revine programului monitor. Adresa de sfrit se mai
numete adres de breakpoint (de ntrerupere), iar aceast form de rulare are
denumirea cu breakpoint . Este folosit n situaii de depanare a programelor,
cnd acestea se ruleaz pe poriuni.
h) HEXADECIMAL - permite realizarea operaiilor de adunare i scdere ntre
dou numere reprezentate n sistemul de numeraie hexazecimal.
>Hxxxx, yyyy <CR>
unde xxxx = primul numr (n hexazecimal)
yyyy = al doilea numr (n hexazecimal)
La display, pe rndul urmtor, se afieaz suma i, respectiv, diferena
(reprezentate n hexazecimal) celor dou numere anterioare i apoi un nou
prompter.
Comanda se poate folosi pentru a efectua calcule rapide ntre numere
reprezentate n hexazecimal.

ndrumar de laborator 1

3.2. Mediul de dezvoltare IAR


IAR Systems Embedded Workbench este un mediu integrat flexibil pentru
o varietate de aplicaii proiectate pe diferite tipuri de procesoare. Este nzestrat cu o
interfa grafic ce permite dezvoltarea rapid a programelor i depanarea lor.
Deine urmtoarele unelte de lucru: Embedded Workbench, C compiler,
Assembler, XLINK linker, XLIB librarian, C-SPY debugger.

Crearea unui proiect n IAR Systems Embedded Workbench


a)

Pentru a crea un proiect trebuie urmai urmtorii pai:


FILE -> NEW -> PROJECT -> OK

Fig. 3. Comenzile de realizare ale unui proiect


Dup ce proiectul a fost creat, se deschide o fereastr de editare a programului n
samblare prin urmtoarele comenzi:
b)
FILE -> NEW -> Source/Text -> OK
Noul fiier se salveaz cu extensia .asm i trebuie plasat n acelai director n care a
fost creat proiectul. n final, va fi adugat la proiect prin urmtoarele comenzi:
c)
PROJECT -> FILES
i se va deschide o fereastr cu titlul PROJECT FILES. n aceast fereastr se
selecteaz directorul n care a fost salvat fiierul cu extensia .asm, iar apoi se va da
comanda ADD pentru a-l aduga la proiect. Pentru confirmarea operaiilor
anterioare este apsat butonul DONE. Dup aceasta se va observa ca fiierul
respectiv va fi adunat la proiectul n care se lucreaz.

10

ndrumar de laborator 1

Spre exemplu, dup ce s-a creat un proiect si s-a adugat un fiier cu


extensia .asm, se introduce urmtorul program:
1.
ORG 0000h
2.
LD A,10h
3.
LD B,20h
4.
LD C,30h
5.
END
Liniile 1 i 5 conin directivele ORG i END, ale asamblorului, care indic unde va
fi plasat codul main n memorie i unde se termin asamblarea programului.
Liniile 2, 3, i 4 sunt instruciuni ale microprocesorului Z80 n limbaj de asamblare.
Pentru a trece acest program n cod main trebuie aplicat urmtoarea
comand:
PROJECT -> MAKE
sau se apas icoana MAKE indicat n figura de mai jos:

Make

Debugger

Fereastra de
reprezentare a
proiectului sub
forma de arbore

Zona de editare
a programelor

Fereastra mesajelor
date de asamblor

Fig. 4. Modul n care se face editarea i corectarea sintaxei unui


Dac numrul de erori din fereastra Messages este 0, atunci se va activa
icoana Debugger (Fig. 2) pentru simularea programului editat anterior cu ajutorul
aplicaiei C-SPY debugger (fig.3).

11

ndrumar de laborator 1

Regitrii
microprocesorului
Z80

Codul
main

Memoria
microprocesorului

Fig. 5. Modul n care se face depanarea unui program.


Icoanele utilizate pentru rularea programului sunt:
ncarc registrul PC cu adresa 00h i reiniializeaz regitrii procesorului.
Simuleaz resetul procesorului.
Ruleaz programul pas cu pas fr s intre n subrutine.
Ruleaz fiecare insctruciune pas cu pas.
Prin rularea programului pas cu pas se va observa schimbarea regitrilor afectai
prin afiarea acestora cu rou, la execuia fiecrei instruciuni n parte.

12

ndrumar de laborator 1

Utilizarea aplicailor
Embedded Workbench i C compiler dau
posibilitatea de editare a programelor n limbajul C. Asamblorul poate genera
fiiere cu extensia .hex ce conin codul main a programului n limbajul C sau n
limbaj de asamblare. Aceste fiiere se pot descrca n memoria unui microsistem
cu microprocesor Z80.

3.3. Sisteme de numeraie


3.3.1. Sistemul binar
n sistemele digitale sunt utilizate dou nivele de tensiune (uzual 0V i
5V). Prin aceste dou nivele de tensiune se materializeaz cele dou valori distincte
care au fost alese prin convenie s fie 0 i 1, corespunztoare cifrelor utilizate n
sistemul de numeraie binar.
n microsistemele electronice, unitatea cea mai mic de reprezentare a
informaiei se numete bit. Patru bii formeaz un NIBBLE, opt bii formeaz un
BYTE (octet), doi octei formeaz un cuvnt adic WORD, dup cum este artat
n figura 6.

Fig. 6. Moduri de reprezentare a unui numr binar


Transformarea n sistemul zecimal se face prin nsumarea produselor dintre
respectivele cifre binare cu baza la puterea poziiei cifrei. De exemplu, pentru
valoarea binar 10100101 avem relaia:

Transformarea din sistemul zecimal n binar se face prin mpriri


succesive la 2 (baza n care trebuie reprezentat). De fiecare dat trebuie reinut
rezultatul i lsat restul. Procesul se continu pn cnd restul va avea valoarea 0.

13

ndrumar de laborator 1

Resturile rezultate, n ordinea invers a obinerii, sunt utilizate pentru a reprezenta


numrul n baza doi. De exemplu, pentru valoarea zecimal 5 vom avea relaia:

3.3.2. Sistemul hexazecimal


Formatul de numeraie hexazecimal reprezint o form compact i uor
de citit a sistemului binar. Conversia din sistemul binar n hexazecimal se face
uor, fiecare nibble (4 bii), ncepnd de la bitul cel mai puin semnificativ fiind
convertit ntr-o cifr hexazecimal dup cum este artat n figura de mai jos.

Transformarea din zecimal n hexazecimal se face asemntor ca i la


transformarea din zecimal n binar, cu observaia c se schimb baza. De exemplu,
pentru valoarea hexazecimal 1234h avem:

14

ndrumar de laborator 1

Transformarea din sistemul zecimal n sistemul hexazecimal se face prin


mpriri la 16, baza n care trebuie reprezentat respectivul numr. Procedeul de
calcul este la fel ca i cel de trecere din sistemul binar n sistemul zecimal. De
exemplu, pentru valoarea zecimal 39 avem:

3.3.3. Reprezentarea numerelor binare cu semn


Este un sistem de codare ce permite reprezentarea numerelor binare cu
semn. Poate fi pe un numr oarecare de bii (de obicei, pe un multiplu de 8 bii).
Semnul numrului este dat de bitul cel mai semnificativ al reprezentrii.
La Z-80 se folosete reprezentarea n complement fa de doi (CC2) pe 8
bii. Astfel, CC2 permite reprezentarea numerelor de la -128(10) la +127(10). n
funcie de bitul cel mai semnificativ, convenia de semn pentru reprezentare este:
0 - pentru numere pozitive (inclusiv 0) ;
1 - pentru numere negative .
Regula de transformare a unui numr binar n echivalentul su CC2 este:
- pentru numere pozitive din gama [0, ... , 127], CC2 este identic cu codul binar;
- pentru numere negative din gama [-128, ... , -1], CC2 se obine plecnd de la
codul binar al numrului, care se complementeaz (se neag), obinndu-se astfel
Codul Complement fa de 1 (CC1) i la acest numr se adun 1.
De exemplu, numrul binar cu semn (echivalentul su hexazecimal) + 07h
are n CC2 reprezentarea 07h (folosind tot sistemul hexazecimal). La acest numr,
primul bit (cms) este 0.
Pentru numrul negativ - 05h, se obine CC1 ca fiind 0FAh, iar n CC2,
adunnd un 1 rezult 0FBh. La acest numr, bitul cms este 1, indicnd un
numr negativ.

15

ndrumar de laborator 1

3.4. Setul de regitri ai microprocesorului Z-80


Microprocesorul Z-80 conine dou seturi de regitri generali pe 8 bii,
setul principal i, respectiv, setul secundar (notat cu ), precum i un set de regitri
pe 16 bii. Grafic, regitrii sunt prezintai sub urmtoarea form :

PC

S Z

SP

semn
zero

IX

transport la jumtate

IY
I

depire / paritate
negativ
transport

16

O N C

ndrumar de laborator 1

Regitrii microprocesorului se constituie ntr-o zon de memorie RAM, ce


poate fi accesat foarte rapid de procesor. Coninutul unui registru rmne
nemodificat pn la urmtoarea scriere care se efectueaz n acesta. Regitrii pe 16
bii sunt permanent accesibili utilizatorului. La un moment dat, utilizatorul are
acces doar la regitrii pe 8 bii aflai n setul principal (respectivul set de regitri
este activ). Datele stocate n setul secundar de regitri sunt pstrate, dar ele sunt
inaccesibile utilizatorului. Aceste informaii vor putea fi din nou accesibile, odat
cu reactivarea respectivului set de regitri.
Procesul de reactivare a setului secundar de regitri este nsoit de
dezactivarea setului de regitri care pn n momentul respectiv a fost set principal
(acesta devenind astfel set secundar). Revalidarea se face prin dou instruciuni
speciale de tip exchange care vor fi prezentate mai trziu.
a) Regitrii pe 8 bii
A = accumulator (acumulator) - la nivelul lui se efectueaz operaiile aritmeticologice precum i cele de transfer cu circuitele I/O. De fapt, este cel mai important
registru al procesorului, prin el derulndu-se majoritatea operaiilor. Se recomand
s nu se foloseasc acest registru pentru stocarea (memorarea) de informaii, altfel
putnd apare blocaje la efectuarea de operaii.
F = flags (indicatori, stegulee) - registrul indicatorilor de condiii. Conine bistabili
corespunztori indicatorilor de condiii din unitatea RALU. Sunt folosii doar 6 din
cei 8 bistabili ai circuitului. Aceti indicatori sunt testai de instruciuni specifice
(instruciunile pentru testarea indicatorilor de condiii) ce vor fi prezentate ulterior.
n general, indicatorii nu pot fi poziionai direct de utilizator. Ei sunt poziionai
ca urmare a efecturii operaiilor aritmetico-logice. Multe operaii efectuate de
procesor las neafectai aceti indicatori (de exemplu, operaiile de transfer, de salt,
etc).
La microprocesorul Z-80, structura registrului F este urmtoarea:

S Z

O N C

S - Sign (semn) - indicator ce prezint semnul rezultatului operaiei aritmeticologice; este practic bitul cel mai semnificativ al rezultatului; acest indicator are
semnificaie doar dac operanzii implicai n operaie sunt exprimai n cod
complement fa de 2 (CC2), adic au o reprezentare cu semn. n aceast situaie:
S = 1 reprezint un rezultat negativ,
S = 0 reprezint un rezultat pozitiv sau 0.
Z - Zero (zero) - indic dac rezultatul operaiei aritmetico-logice este nul
Z = 1 reprezint rezultat nul,
Z = 0 reprezint rezultat nenul.
H - Half carry (transport la jumtate) - indic apariia unui transport ntre nybbleul inferior i cel superior (adic ntre D3 i D4 ) la un rezultat al unei operaii

17

ndrumar de laborator 1

aritmetico-logice. Indicatorul este folosit la operaiile de conversie din binar n cod


BCD (binary coded decimally).
P/V - Parity/Overflow (paritate / depire) - indicator cu dubl semnificaie; n
urma operaiilor logice indicatorul prezint paritatea rezultatului obinut, iar n
urma operaiilor aritmetice este indicat depirea gamei de reprezentare (pe 8 bii)
de ctre rezultat.
n cazul paritii:
P = 1 , dac numrul biilor aflai n starea logic 1 din rezultat este un
numr par sau zero;
P = 0 , dac numrul biilor aflai n starea logic 0 din rezultat este
numr impar.
n cazul depirii:
V = 1 , dac s-a produs depirea gamei de reprezentare;
V = 0 , dac depirea gamei nu s-a produs.
Indicatorul de depire are semnificaie doar dac operanzii implicai n
operaie sunt reprezentai n cod complement fa de 2 (CC2). Microprocesorul Z80 admite o reprezentare a numerelor n CC2 pe 8 bii, adic se lucreaz cu
numere cu semn n gama -128,...+127.
Ecuaia logic a indicatorului V este :
V = T7 T6 unde T7 , T6 sunt cei doi bii de transport mai semnificativi
ai rezultatului.
N - (negative) negativ - este un indicator al operaiilor de adunare i scdere.
Astfel, dac:
N = 0 , operaia anterioar a fost de adunare,
N = 1 , operaia anterioar a fost de scdere.
Indicatorul este folosit la conversiile numerelor binare n echivalentul lor BCD.
Cy - (carry) transport - indicatorul de transport (carry) sau mprumut (borrow)
pentru operaiile aritmetice. Operaiile logice las neafectat acest indicator. Astfel:
Cy = 0 , indic faptul c operaia aritmetic nu a avut transport (sau
mprumut) ;
Cy = 1 , indic faptul c a aprut transport sau mprumut n urma
operaiei aritmetice.
Indicatorul se poziioneaz indiferent de modalitatea de reprezentare a
operanzilor implicai n operaie. Se atrage atenia asupra diferenei ce exist ntre
semnificaia acestui indicator i, respectiv, a indicatorului de depire.
Indicatorul Cy este singurul care se poate poziiona prin instruciuni
specifice direct de ctre utilizator.
Indicatorii S, Z, P/V, Cy se pot testa direct prin instruciuni aa cum se va
vedea mai trziu. Ceilali indicatori (H, N) se pot testa doar indirect prin alte
proceduri.
Regitrii A i F se pot concatena (uni), rezultnd un registru pe 16 bii, AF,
denumit i PSW (programm status word) - cuvntul de stare program. n AF
(PSW), F reprezint octetul cel mai puin semnificativ (ocmps), iar A este octetul
cel mai semnificativ (ocms).

18

ndrumar de laborator 1

B, C, D, E, H, L - regitri de uz general pe 8 bii. De obicei, aceti regitri se pot


folosi pentru stocri temporare de informaii.
Se pot concatena doi cte doi, regitrii aflai pe aceeai orizontal din
tabelul anterior, rezultnd regitri extini (pereche, dubli) pe 16 bii : BC, DE, HL.
Denumirea acestor regitri nu provine din cuvinte deosebite. Excepie fac regitrii
H i L care provin din cuvintele englezeti High (ridicat) i Low (cobort). De
obicei, registrul dublu HL este folosit pentru adresarea locaiilor de memorie. n
acest registru dublu, H reprezint ocms-ul, iar L formeaz ocmps-ul, rezultnd o
explicaie a denumirii acestora.
n regitrii extini amintii anterior, B, D, H formeaz ocms-ul, iar C, E, L
reprezint ocmps-ul.
b) Regitrii pe 16 bii
PC = programm counter (numrtor de program) - n acest registru procesorul
calculeaz adresa de memorie a urmtoarei instruciuni ce va fi rulat (adresa
codului propriu-zis al acestei instruciuni).
La microprocesorul Z-80, o instruciune poate fi reprezentat n memoria
microsistemului pe unu pn la patru octei. Instruciunea conine ntotdeauna o
parte (unu sau doi octei) ce reprezint codul propriu-zis al instruciunii. Pe de alt
parte, poate conine opional i unul sau doi operanzi. Numrul octeilor din codul
propriu-zis, precum i numrul octeilor de tip operanzi sunt funcie de tipul
respectivei instruciuni. Octeii de tip cod propriu-zis sunt preluai din memorie
(operaia fetch), adui n automatul CROM al microprocesorului i decodificai.
Funcie de rezultatul decodificrii se dau comenzi pentru execuia instruciunii i
pentru eventuala preluare din memorie a operanzilor implicai.
Figura urmtoare exemplific plasarea n memorie a instruciunilor cu cele
dou componente ale acestora (cod propriu-zis, notat prin litera I i eventuali
operanzi, simbolizai prin litera O).
La reprezentarea n memorie a unei instruciuni, ntotdeauna primul octet
(sau primii doi octei) reprezint codul propriu-zis al instruciunii (n figura
urmtoare acest cod este simbolizat prin ), iar urmtorul octet (sau urmtorii
doi octei) reprezint operanzii.
n registrul PC se calculeaz adresa locaiei de memorie la care se afl
codurile propriu-zise ale instruciunii, n vederea extragerii lor din memorie pentru
decodificare i execuie.

19

ndrumar de laborator 1

I1
O1
I2
I31
I32
I4
O41
O42
I51
I52
I61
I62
O6

Instruciunea 1
Instruciunea 2
Instruciunea 3
Instruciunea 4
Instruciunea 5
Instruciunea 6

SP = (Stack Pointer) - indicatorul vrfului stivei. La microprocesorul Z-80, stiva


este o parte a memoriei RAM externe. Este folosit n vederea depunerii i
extragerii de informaii. Informaiile constau de obicei, din datele memorate n
regitrii dubli ai microprocesorului. Folosirea stivei se poate face prin instruciuni
de ctre utilizator (manual), dar n anumite situaii specifice stiva este folosit
automat de mecanismele procesorului, fr intervenia programatorului. Astfel de
situaii sunt apelul subrutinelor, tratarea cererilor de ntrerupere. n aceste situaii
speciale, n stiv se salveaz contextul de lucru al procesorului (PC-ul actual sau
locul n care programul aflat curent n rulare este suspendat). Dup tratarea situaiei
speciale ce a intervenit, tot automat, din stiv se extrage informaia depus anterior,
restabilindu-se locul n care a intervenit suspendarea, continundu-se rularea din
acest punct.
Stiva este adresat printr-un mecanism de tip LIFO (Last n First Out ultimul intrat primul ieit). Registrul SP este folosit pentru a adresa aceast parte de
memorie, indicnd de fiecare dat adresa ultimei depuneri (vrful stivei). Iniial,
trebuie fixat baza stivei prin ncrcarea registrului SP. La o depunere, SP-ul i
micoreaz valoarea prin operaii de decrementare, iar la extragerea din stiv i
mrete valoarea prin operaii de incrementare .

20

ndrumar de laborator 1

Deci, stiva crete ctre napoi, adic spre adresele de nceput ale
memoriei (ctre adresa 0000h).
IX, IY = (regitrii Index X i Y) . Sunt regitrii pe 16 bii folosii n operaii de
adresare indexat. Procedura de adresare indexat va fi prezentat ulterior.
I = (Interrupt) - registrul de ntreruperi. Este un registru pe 8 bii folosit n
situaiile de tratare a ntreruperilor mascabile, primite de procesor pe intrarea INT ,
n modul 2 de tratare a acestora. Modurile de tratare a ntreruperilor mascabile vor
fi prezentate ulterior. Nu poate fi folosit pentru memorarea altor informaii.
R = (Refresh) - registrul de remprosptare. Este de fapt un registru pe 8 bii folosit
pentru remprosptarea eventualelor memorii de tip DRAM conectate la
magistralele microprocesorului Z-80. Doar ultimii apte bii ai acestui registru sunt
activi, bitul cel mai semnificativ fiind ntotdeauna 0. Dup execuia oricrei
instruciuni, coninutul acestui registru se incrementeaz. n total se pot executa
128 ( 27 ) cicli de refresh. Coninutul acestui registru se transmite pe magistrala de
adrese, pe octetul cel mai puin semnificativ al acesteia ( A7 , ... , A0 ) pe timpul
efecturii ciclului. Aceast informaie este folosit pentru asigurarea refresh-ului la
DRAM-urile conectate extern. n aceste situaii, pe octetul cel mai semnificativ al
aceleiai magistrale ( A15 , ... , A8 ) se transmite coninutul registrului I, fr nici
un fel de nsemntate practic. Aceast dubl trimitere se constituie ntr-o
explicaie a considerrii regitrilor I i R, ca fcnd parte din categoria regitrilor
pe 16 bii. Nu poate fi folosit pentru memorarea altor informaii.

4. Desfurarea lucrrii
Se va citi i conspecta breviarul teoretic. Se atrage atenia asupra faptului
c toate cunotinele cptate n acest laborator vor fi necesare i n derularea
celorlalte lucrri.
Se vor studia comenzile programului monitor. Se vor efectua operaiile
indicate mai jos, respectnd ordinea propus.
OBSERVATIE. Din punct de vedere al arhitecturii hardware a
microsistemelor aflate n laborator se specific faptul c zona de RAM (32
Koctei), se afl cuprins ntre adresele 8000h i 0FFFFh. Se recomand totui ca
utilizatorul s foloseasc zona cuprins ntre adresele 8010h i 0FF00h. Celelalte
locaii sunt folosite de programul monitor pentru plasarea de variabile. Zona de
memorie ROM (n care se afl programul monitor) este cuprins ntre adresele
0000h i 7FFFh (32 Koctei). Aceast zon este protejat la eventualele ncercri
de scriere accidental. De la adresa 0000h la 3FFFh se afl programul monitor iar
de la adresa 4000h la 7FFFh exist posibilitatea cuplrii unui emulator de memorie
ROM, microsistemul dispunnd de un soclu adecvat. Prin intermediul unui astfel
de aparat va fi posibil punerea la punct foarte rapid a programelor. Se poate

21

ndrumar de laborator 1

emula o memorie ROM de pn la 64Koctei. Folosind emulatorul, programele vor


putea fi scrise n limbaj de asamblare pe un calculator PC. Asamblarea se va face
utiliznd un program de tip crossasamblor, fiierul obiect rezultat descrcndu-se
n emulator (download).

1) Se va vizualiza ( comanda Display ) coninutul zonei de memorie cuprins ntre


adresele 8200h i 8300h ( h - reprezint sistemul de numeraie hexazecimal ).
S se identifice cmpurile de adres precum i de date. S se specifice numrul de
bii pe care este reprezentat fiecare cmp n parte.
2) Se va umple ( comanda Fill ) zona de memorie cuprins ntre adresele 8200h i
8300h cu constanta 55h apoi se va vizualiza zona de memorie ( comanda Display )
i se va face remarca modificrii coninutului acestei zone fa de situaia primei
citiri.
3) Se va umple ( comanda Fill ) zona de memorie cuprins ntre adresele 0200h i
0300h cu constanta 55h apoi se va vizualiza zona de memorie ( comanda Display )
i se va explica din ce motiv nu este modificat aceast zon de memorie.
4) Se va muta ( comanda Move ) coninutul zonei de memorie cuprins ntre
adresele 8200h i 8300h, n zona cuprins ntre adresele 8400h i 8500h.e) i se va
vizualiza ( comanda Display ) coninutul aceleai zone de memorie cuprins ntre
adresele 8400h i 8500h, fcndu-se remarca modificrii acestei zone fa de
situaia primei citiri.
5) Se va compara zona de memorie (comanda Compare) cuprins ntre adresele
8200h i 8300h, cu zona de memorie cuprins ntre adresele 8400h i 8500h.
Umplei zona de memorie 8200h 8205h cu constanta 33h i repetai comanda de
comparare de la nceputul enunului. Se va stabili dac exist sau nu diferene ntre
acestea n cele dou cazuri.
6) Folosind comanda H se vor aduna i scdea (n hexazecimal) urmtoarele
perechi de numere:
4532h cu 1234h , 0ABCDh cu 9876h , 2AC9h cu 87BFh , 0DF2Bh cu
0E19Ch .

22

ndrumar de laborator 1

NOTA. Un program de tip asamblor ( crossasamblor ) lucreaz cu constantele


hexazecimale care ncep cu o litera (A, B, C, D, E, F) doar dac n faa acestora se
plaseaz un zero ( 0 ). Dac n astfel de situaii nu se introduce cifra 0, asamblorul
semnalizeaz eroare de sintax. Pentru introducerea acestor tipuri de date n
memoria microsistemului, folosind comenzile programului monitor, cifra 0 poate
s nu fie folosit.
7) Cu ajutorul mediului de dezvoltare IAR se va crea un proiect i se introduce
programul urmtor:
org 0000h
ld SP,9030h
ld A,41h
bucla out (0040h),A
call temp
call temp
jp bucla
org 0020h
temp ld B,04h
et2
ld C,0ffh
et1
dec C
jp NZ,et1
dec B
jp NZ,et2
ret
end
Dup ce este compilat proiectul cu comanda MAKE nu rezult nici o eroare rulai
CSPY prin activarea butonului DEBUGGER.
- Identificai n ce zon se afl programul utiliznd fereastra SOURCE.
Apoi identificai unde este plasat programul n memorie utiliznd fereastra
MEMORY WINDOW;
- Rulai programul pas cu pas i observai modificrile regitrilor din
fereastra REGISTER;
- Observai de ci cicli main are nevoie fiecare instruciune n parte i
ci octei de cod main ocup.
8) Modificai prima linie de program org 0000h cu 9000h i reasamblai
programul. Activai din nou programul CSPY i vizualizai codul main a
programului din memoria de programe. Scriei acest cod n memoria
microsistemului cu ajutorul programului MONITOR prin comanda Substitute.
- Se verific introducerea corect a datelor de mai sus (n ordinea indicat)
prin folosirea comenzii Display.
- Se ruleaz programul prin comanda G9000h (startarea programului se
face de la adresa 9000h), remarcndu-se efectul acestei comenzi pe ecranul
display-ului.

23

ndrumar de laborator 1

9) n programul de la punctul 8 se modific instruciunea ld B,04h cu


instruciunea ld B,03h. Care este efectul asupra programului dup rularea acestuia
pe microsistem.
10) Care sunt datele echivalente n zecimal pentru urmtoarele numere exprimate
n hexazecimal: 4F5h, 256h, ABCh, 3FF4h.
11) Care sunt datele echivalente n hexazecimal pentru urmtoarele numere
exprimate n zecimal: 675(10), 438(10), 540(10), 810(10), 777(10).
12) Transformai prin metoda direct din binar n hexazecimal urmtoarele numere:
01001011(2), 11010111(2), 10101010(2), 10110011(2),, 11110000(2).
13) Efectuai urmtoarele adunri n sistemul de enumeraie hexazecimal:
399h+3A5h, 300h+F00h, ACDh+DD3h, E5Bh+25Fh, 4FCh+978h.
14) Efectuai urmtoarele scderi n sistemul de enumeraie hexazecimal: 421h398h, 333h-ABFh, 7CAh-2DE, 452h-655h, 1FCh-0FFh.
15) Calculai complementul fa de doi a urmtoarelor numere exprimate n
sistemul de enumeraie zecimal: -34(10), -17(10), -43(10), +2(10).

24

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