Sunteți pe pagina 1din 18

SISTEME CU MICROPROCESOARE L4, L5, L6

L4, L5, L6. INTRODUCERE ÎN SISTEME CU MICROPROCESOARE


Descriere şi funcţionare - Software

 OBIECTIVE
1. Funcţionarea şi programarea unui microprocesor;
2. Ciclurile de bază ale unui microprocesor;
3. Reprezentarea numerelor în sistemele cu microprocesoare
4. Studiul programului Monitor al modulului Z3EV

 MATERIALE NECESARE
Modul experimental Sistem cu Microprocesor 32 biţi - modul Z3EV

 FUNCŢIONAREA ŞI PROGRAMAREA UNUI MICROPROCESOR

1. Funcţionarea microprocesorului
Microprocesorul este un circuit integrat care poate efectua operaţii aritmetice şi logice
sub controlul unui program memorat, fiind definit ca unitatea centrală a unui
calculator, încorporată într-o singură capsulă de circuit integrat. El va citi instrucţiunile
unui program dintr-un bloc de memorie, le va decodifica şi va executa comenzile
formulate în însuşi codul instrucţiunii.
Pentru a citi din blocul de memorie externă codul instrucţiunii ce urmează a fi
executată, microprocesorul va trebui să genereze o adresă pe care o va pune la
dispoziţia memoriei, până când din celula selectată pe baza acestei adrese va apare data
cerută. Pentru a putea “menţine” starea liniilor de adresă pe durata întregii operaţii de
citire, microprocesorul posedă un element de memorie intermediar numit registrul
tampon de adrese AB (Address Buffer). Acesta izolează magistrala externă de date
de cea internă memorând temporar adresele (Fig.2.1).
Informaţia codificată, citită din memorie este depusă temporar într-un registru
intermediar numit registru tampon de date DB (Data Buffer). Este un registru
bidirecţional, care delimitează interiorul microprocesorului de sistemele externe, fiind
necesar în primul rând pentru a menţine datele ce sunt trimise din celulele registrelor
interni spre memorie, sau spre periferice.
Liniile electrice pe care se generează cuvântul binar de adresă se numesc magistrală
de adrese ABUS (Address Bus), iar cele dedicate datelor citite/scrise în memorie,
magistrală de date DBUS (Data Bus).
Unitatea aritmetică logică ALU (Aritmetic Logic Unit) este utilizată pentru
efectuarea operaţiilor aritmetice şi logice.
Unitatea de comandă CC (Comand Circuit) generează semnalele de comandă pentru
întregul sistem, dirijează fluxul de date, corelează viteza de lucru a unităţii centrale cu
timpul de acces al memoriei, etc., unitatea “sparge” instrucţiunea curentă în paşi
elementari, programând execuţia secvenţială a acesteia.
1
L4, L5, L6 Introducere în sisteme cu microprocesoare – Software
În activitatea acestui bloc se disting următoarele faze majore:
- citeşte din memorie codul instrucţiunii de executat şi îl decodifică;
- programează toate activităţile interne şi externe pentru a efectua instrucţiunea.
n-biţi m-biţi
Magistrală Porturi intrare/ieşire (I/O)
Magistrală
externă externă
de date Memorie de instructiuni (ROM)
de adrese
Memorie de date (RAM)
()
Registre generale
Registrul I/O (DB) .. Reg. adrese (AB)
.
Mag. internă adrese m-biţi
Mag. internă date n-biţi

Registrul de Numărător de
Registrul indicatori instrucţiuni (IR) adrese (PC)
de condiţii (F)
... OPCODE Adresă
operand
Unitatea
aritmetică
Decodificatorul
şi logică instrucţiunii (ID)
(ALU)

Registru Unitatea de comandă şi


acumulator control (CPU) TACT
(A)
Microprocesor

Fig.2.1. Structura standard a unui microprocesor

Semnalele electrice prin care microprocesorul dă comenzi de execuţie către memorie şi


celelalte componente din sistem se numesc semnale de comandă.
Semnalele electrice prin care microprocesorul culege informaţii privind starea
diferitelor componente din sistem se numesc semnale de stare.
Locaţiile de memorie interne folosite pentru înmagazinarea temporară a unor date sau
adrese se numesc registre. Din punct de vedere al destinaţiei există registre de uz
general care se folosesc ca simple celule de memorie internă şi alţii cu destinaţie
specială, care pe lângă trăsătura de memorare, sunt dedicaţi stocării numai unui anumit
tip de date sau sunt înzestraţi cu anumite facilităţi suplimentare.
Pentru efectuarea transferurilor interne de date, microprocesorul dispune de o
magistrală internă de date.
La terminalele microprocesorului regăsim semnalele sale de comunicaţie cu sistemul
constituit în jurul lui: magistrala de adrese, magistrala de date şi magistrala de
comenzi. La magistralele de date şi de comenzi pot fi cuplate circuite de intrare/ieşire
(I/O) care stabilesc legătura cu alte componente: interfaţa om-maşină, memorii de masă
2
SISTEME CU MICROPROCESOARE L4, L5, L6
nevolatile, etc.
“Lungimea” (numărul de bit) registrelor interni ai microprocesorului se corelează cu
“lăţimea” (numărul de linii) magistralei de date. Aceasta este măsura “numărului de
biţi” ai unui microprocesor. Microprocesoarele cu structură fixă sunt de obicei de 8, 16,
32 sau 64 de biţi.
Registrul de adresă, respective “lăţimea” magistralei de adrese, defineşte spaţiul de
memorie adresabil direct de către microprocesor. De exemplu o magistrală de adrese
de 16 bit permite adresarea a 216 = 65.536 celule de memorie distincte.
Principalele registre speciale ale unui microprocesor sunt:
- Contorul program – PC (Program Counter) este destinat să memoreze adresa
instrucţiunii ce urmează a fi executată. După ce citeşte codul instrucţiunii curente
din memorie conţinutul acestui registru este incrementat automat cu 1. Astfel se
asigură secvenţialitatea în execuţia unui şir de instrucţiuni. Instrucţiunile se vor
executa începând de la adresa 0, în ordinea crescătoare a adreselor. Există şi
instrucţiuni de salt, care înscriu direct conţinutul registrului PC cu o valoare dorită
de programator. Astfel pot fi executate programe a căror adresă de început diferă
de 0 şi se pot executa ramificaţii în program, în funcţie de rezultatul unor calcule,
sau a unor evenimente externe detectate prin program (salturi condiţionate).
- Indicatorul de stivă – SP (Stack Pointer) este un registru de adresare a stivei.
Deoarece numărul registrelor interni este limitat, şi implicit şi al datelor ce se pot
înmagazina în ei, apare frecvent necesitatea de a elibera unul sau mai mulţi
registre pentru ca ei să poată înmagazina temporar noi date (la elaborarea unor
programe scrise în limbaj de asamblare). Datele din aceşti registre vor fi salvaţi
într-o zonă din memoria externă cu o organizare specială numită stivă. Pentru
evitarea memorării adreselor locaţiilor RAM unde au fost salvaţii registre (zeci de
adrese) şi pentru a evita eventuala salvare a acestor valori peste zone de program
(care rezidă tot în memorie) s-a convenit ca o zonă de memorie să aibă o
organizare specială de tip LIFO (Last In First Out – Ultimul Intrat Primul Ieşit).
Se va folosi un indicator de adresă care la fiecare salvare a unui registru (la fiecare
scriere în memorie) va avansa automat indicând adresa următoarei celule libere.
La restaurarea conţinutului registrului dorit (la citirea din memorie) indicatorul de
adresă se va repoziţiona automat indicând adresa de memorie a penultimei date
salvate. Registrul de adresă numit şi indicator de stivă prevăzut cu automatul de
incrementare/decrementare (la operaţiile de citire/scriere în memorie) poate
controla în mod univoc toate operaţiile de salvare/restaurare din stivă La
majoritatea microprocesoarelor stiva este descrescătoare (salvările succesive se
fac la adrese descrescătoare) şi este poziţionată la sfârşitul memoriei RAM (prima
locaţie din stivă fiind ultima locaţie din memoria RAM) sau la o adresă imediat
inferioară începutului de program.
- Registrul de instrucţiune – IR (Instrucţion Register) este registrul în care se
depozitează codul instrucţiunii citite din memorie. Circuitul de comandă al
microprocesorului preia codul instrucţiunii de executat din IR, îl decodifică şi îşi
programează toate sarcinile rezultate din această decodificare. Programatorul nu
are acces în mod explicit la acest registru.
- Registrul A (Acumulator) este registrul implicat în toate operaţiile aritmetice şi
3
L4, L5, L6 Introducere în sisteme cu microprocesoare – Software
logice. Unul din cei doi parametri asupra cărora urmează să fie efectuată o
operaţie aritmetică sau logică se va afla obligatoriu în acumulator. Rezultatul
operaţiei se generează de asemenea în registrul A, el suprascriindu-se peste
valoarea iniţială.
- Registrul indicator de condiţie (Registrul de stare)– F (Flag) este un registru
care furnizează atât programatorului cât şi unităţii de comandă a
microprocesorului informaţii privind natura rezultatului unei operaţii aritmetice
sau logice efectuate. Fiecare bit din acest registru prin valoarea 0 sau 1 indică
satisfacerea sau nesatisfacerea unor condiţii date. Semnificaţia biţilor din acest
registru este:
- Flag-ul S (Sign - Semn) – bit 7 este bit-ul de semn, memorează bitul cel mai
semnificativ al unui număr rezultat pe baza unei operaţii aritmetice sau logice
în acumulator. În reprezentarea binară a numerelor bitul cel mai semnificativ
se foloseşte de obicei pentru indicarea semnului unui număr. Prin convenţie
valoarea 0 a bitului indică un număr pozitiv, iar valoarea 1 un număr negativ.
Acest bit poate fi testat prin instrucţiunile de salt condiţionat.
- Flag-ul Z (Zero) – bit 6 are valoarea 1 dacă rezultatul unei operaţii este 0.
Dacă rezultatul operaţiei diferă de 0, atunci conţinutul indicatorului Z va fi 0.
Acest bit poate fi testat prin instrucţiunile de salt condiţionat.
- Flag-ul H (Half carry) – bit 4 reprezintă transportul care apare în cursul unei
operaţii aritmetice de la bit 3 spre bit 4 al acumulatorului şi este folosit de
către unitatea ALU a microprocesorului la execuţia instrucţiunii de corecţie
zecimală pentru corecţia numerelor zecimale codificate binar.
- Flag-ul P/V (Parity/Overflow) – bit 2 poate indica paritatea numărului din
acumulator sau depăşire de domeniu. Acest bit poate fi testat prin
instrucţiunile de salt condiţionat.
- Falg-ul N – bit 1 indică tipul ultimei operaţii aritmetice efectuate:
N = 1 dacă ultima operaţie aritmetică a fost adunare
N = 0 dacă ultima operaţie aritmetică a fost scădere.
- Flagul Cy (Carry - transport) – bit 0 este un flag afectat atât de operaţiile
aritmetică/logice cât şi de clasa operaţiilor de rotire/deplasare. Acesta este
modificat de câte ori apare un transport de la cifra cea mai semnificativă în
sus. Există instrucţiuni speciale pentru modificarea acestui bit şi poate fi
testat prin instrucţiuni de salt condiţionat.
- Registrul vectorului de întreruperi I (Interrupt register) este folosit la
identificarea sursei de cerere a întreruperilor. Prin întrerupere se înţelege
fenomenul la apariţia căruia microprocesorul abandonează – la cererea unui
eveniment extern – programul în curs de rulare, deserveşte – executând un
program dedicat – evenimentul extern, după care se reîntoarce la programul
abandonat, reluându-i execuţia din punctul în care ea fusese suspendată. Una din
sursele din care se formează adresa de început a rutinei de tratare a cererii de
întrerupere recepţionate este registrul I.
Registrele de uz general sunt folosite ca locaţii de memorie de către microprocesor
constituind parametri pentru majoritatea instrucţiunilor procesor.

4
SISTEME CU MICROPROCESOARE L4, L5, L6
2. Programarea microprocesorului
Totalitatea instrucţiunilor pe care un procesor le poate recunoaşte şi executa,
formează setul de instrucţiuni al microprocesorului respectiv.
Un microprocesor poate fi programat:
- folosind programarea în cod maşină (utilizând direct instrucţiuni procesor, deci
practic numere binare);
- folosind programare în limbaj asamblare (limbaj de programare specific
programării microprocesoarelor);
- folosind un limbaj de programare de nivel înalt.
OBS. Poate fi folosită şi o combinaţie a celor trei metode.
Programarea în limbaj de asamblare presupune folosirea unui set de instrucţiuni
specifice fiecărui tip de microprocesor (funcţie de număr de biţi, configurare hard, etc.)
Codurile instrucţiunilor se formulează în limbaj de asamblare ca şi cuvinte cheie,
prescurtate de obicei, care exprimă funcţia reprezentată de codul respectiv. Aceste
cuvinte se numesc mnemonici.
Formatul unei instrucţiuni în limbaj de asamblare este:
instrucţiune operand1,operand2
unde: - instrucţiune reprezintă mnemonica instrucţiunii;
- operand1 şi operand2 fiind operanzii asupra cărora acţionează instrucţiunea
(în funcţie de instrucţiune unul sau ambii operanzi sunt opţionali).
Clasificând instrucţiunile unui microprocesor după funcţia lor obţinem:
- instrucţiuni de transfer
- instrucţiuni aritmetice/logice
- instrucţiuni de lucru cu blocuri de date
- instrucţiuni de salt
- instrucţiuni de apel şi revenire din subrutină
- instrucţiuni de rotire şi deplasare
- instrucţiuni de intrare/ieşire
- instrucţiuni de comandă
Majoritatea instrucţiunilor lucrează cu unul sau mai mulţi operanzi. Modul în care
aceşti operanzi sunt aduşi la cunoştinţa unităţii centrale (microprocesorului), calea pe
care i se comunică adresa la care se află locat operandul căutat, se numeşte tehnică de
adresare, (o instrucţiune poate încorpora data dorită sau adresa acesteia).
Putem avea următoarele tipuri principale de adresare:
a. Adresarea imediată – ori de câte ori corpul unei instrucţiuni (nu codul)
înglobează şi data care reprezintă obiectul acelei instrucţiuni, adresarea se numeşte
imediată.
Exemplu:
LD A,55H – instrucţiunea încarcă registrul A cu valoarea 55H.
AND 8EH – instrucţiunea execută operaţia logică AND între registrul A şi
numărul 8EH.
b. Adresarea implicită – dacă toate informaţiile necesare pentru locarea datei care
reprezintă obiectul unei instrucţiuni, sunt încorporate în codul instrucţiunii atunci
adresarea este implicită.
5
L4, L5, L6 Introducere în sisteme cu microprocesoare – Software

Fig.2.2. Tehnici principale de adresare

6
SISTEME CU MICROPROCESOARE L2
Exemplu:
LD C,D – instrucţiunea transferă conţinutul registrului D în registrul C. Atât
adresa iniţială a datei, cât şi adresa ei de destinaţie sunt
specificate în octetul de cod.
c. Adresarea indirectă - dacă adresa unui operand este conţinutul unui registru sau
a unei locaţii de memorie, tehnica de adresare se numeşte indirectă.
Exemplu:
ADC (HL) – instrucţiunea adună la conţinutul acumulatorului, numărul stocat
în memorie, la adresa conţinută în registrul HL, iar apoi este
adăugată valoarea bitului de transport (carry).
În realitate această instrucţiune conţine adresări de mai multe tipuri:
- 3 adresări implicite cuprinse în octetul de cod, pentru identificarea registrului
A, a bitului carry şi a registrului de adresă HL
- 1 adresare indirectă pentru citirea unui operand din memorie, operand adresat
prin conţinutul registrului HL
d. Adresarea directă – dacă în corpul unei instrucţiuni apare o adresă, adresă care
este adresa efectivă a datei ce constituie obiectul instrucţiunii, atunci adresarea se
numeşte directă.
Exemplu:
LC 1784H,A – instrucţiunea transferă conţinutul registrului A în memorie, la
adresa 1784H. Adresarea folosită este implicită pentru
determinarea sursei (registrul A) şi directă pentru specificarea
destinaţiei (adresa 1784H)
OUT (80H),A – instrucţiunea transferă conţinutul registrului acumulator A la
dispozitivul de ieşire care are adresa 80H. Adresa sursei (A) este
specificată implicit, iar cea a destinaţiei (portul cu adresa 80H)
direct.
e. Adresarea relativă – dacă adresa dorită a unei locaţii de memorie se obţine
adăugând o valoare (oarecare) la conţinutul curent al contorului program PC, atunci
adresarea este relativă.
Exemplu:
JR +05H – instrucţiunea execută un salt la o adresă care se calculează
însumând valoarea` curentă a contorului program PC cu valoarea
(deplasamentul) inclusă în câmpul instrucţiunii. Instrucţiunea din
exemplu utilizează adresarea imediată pentru specificarea
deplasamentului şi adresarea relativă pentru determinarea adresei
de salt.
Dacă un program conţine numai salturi relative (şi nu utilizează adresarea
directă), atunci el poate rula la orice adresă de memorie, fără modificări.
f. Adresarea indexată – dacă adresa unei date, ce constituie obiectul unei
instrucţiuni, se obţine adăugând la un registru de bază (index), un deplasament
(indice), atunci adresarea se numeşte indexată
Exemplu:
LD E,(IX+25H) – instrucţiunea transferă un octet din memorie în registrul E.
Adresa celulei de memorie sursă se obţine însumând conţinutul
7
L2 Introducere în sisteme cu microprocesoare – Software
registrului IX şi valoarea deplasamentului +25H din câmpul
instrucţiunii.

 CICLURILE DE BAZĂ ALE UNUI MICROPROCESOR


Microprocesorul este din punct de vedere al modulului de eşalonare în timp a
activităţilor sale, un dispozitiv sincron: toate operaţiile sale interne şi externe se
întâmplă sincron (simultan) cu fronturile semnalului de tact. Semnalul de tact este un
semnal electric dreptunghiular generat extern, care este folosit pentru sincronizarea
proceselor din sistem.
Entitatea care însumează toate activităţile care se desfăşoară în timpul unei perioade a
semnalului de ceas (tact) se numeşte ciclu de tact.
Entitatea care reuneşte toate activităţile care se desfăşoară pe parcursul execuţiei unei
instrucţiuni a cărui cod este locat în memorie, se numeşte ciclu instrucţiune.
De exemplu cea mai simplă instrucţiune pentru microprocesorul 8086 - SCF - durează
4 perioade ale semnalului de tact, iar cea mai complexă - 23 de perioade ale semnalului
de tact. Practic fiecare instrucţiune este descompusă în operaţii simple (primare)
executabile pe perioada unei perioade a semnalului de tact (unui tact).
În timp ce durata unui ciclu instrucţiune variază de la o clasă la alta, durata ciclului de
tact este unică pentru un microcalculator dat, perioada T a semnalului de tact fiind
unitatea de măsură a timpului elementar consumat de procesor.
Analizând modul de execuţie al celei de-a doua instrucţiuni ( SET 0 (IX+59H) ), se
poate observa că cei 23 tacţi se compun din mai multe activităţi care pot fi grupate
astfel:
- se efectuează 4 citiri din memorie pentru citirea instrucţiunii (este o
instrucţiune pe 4 octeţi);
- se efectuează o citire din memorie de la adresa IX+59H;
- se rescrie la această adresă, octetul în care deja b0 = 0
Se observă că pentru a efectua instrucţiunea analizată microprocesorul va realiza 6
accese la memorie, din care 5 sunt de tip citire, iar unul de scriere.
Pentru a conferi un plus de modularitate şi flexibilitate în execuţia instrucţiunilor,
precum şi pentru a uşura implementarea hardware-ului din chip, ciclul instrucţiune a
fost subdivizat în câteva tipuri de activităţi procesor intermediare.
Suma activităţilor procesor care rezolvă o activitate intermediară bine definită, având
o finalitate clară, în cursul execuţiei unei instrucţiuni, se numeşte ciclu maşină.
Principalele cicluri maşină sunt:
- citirea şi decodificarea codului instrucţiune (fetch) – o instrucţiune constă
dintr-o succesiune de octeţi (1-4 pentru microprocesorul 8086), din care unul
reprezintă obligatoriu codul instrucţiune. Abia după citirea şi decodificarea
acestui cod, microprocesorul va şti ce are de făcut pentru a executa
instrucţiunea.
- citirea unui octet de date (memory read) – datele numerice care apar în
câmpul unei instrucţiuni se citesc din memorie şi se depun într-unul din
registre interni ai microprocesorului. Operaţia fiind mai simplă şi deci mai
scurtă în timp, decât cea precedentă, a dus la realizarea a două tipuri de ciclu
8
SISTEME CU MICROPROCESOARE L2
maşină de citire din memorie
- ciclul de citite a codului operaţiei (fetch)
- ciclul de citire a datelor numerice (read)
- scrierea unui octet în memorie (memory write) – ciclul maşină care rezolvă
operaţia se numeşte ciclu maşină de scriere în memorie: write.
Folosind aceste trei cicluri maşină marea majoritate a instrucţiunilor unui
microprocesor pot fi implementate. În funcţie de microprocesor există şi alte tipuri de
cicluri maşină (speciale).
Sintetizăm funcţionarea microprocesorului astfel:
- instrucţiunile se execută în cicluri de instrucţiune (IC);
- ciclurile instrucţiune sunt constituite dintr-un număr întreg de cicluri maşină
(MC);
- ciclurile maşină sunt constituite dintr-un număr întreg de cicluri de tact (CC).
Ştiind durata reală a unul tact microprocesor se poate determina timpul necesar
execuţiei fiecărei instrucţiuni. Aceşti timpi de execuţie sunt daţi în documentaţia de
firmă a microprocesorului.
Ştiind timpul de execuţie al oricărei instrucţiuni se poate determina cu precizie timpul
necesar execuţiei unui program sau a unui modul (părţi) din el. Pentru comanda unui
proces real acest lucru este esenţial.
Pentru comanda unui proces real (deci un proces care se desfăşoară în timp real) se
impune respectarea timpilor de lucru impuşi de proces. Deci anumite module din
program (sau întreg programul) vor trebui optimizate pentru a se încadra în aceste
limite din punct de vedere al timpului de execuţie al instrucţiunilor componente.

 REPREZENTAREA NUMERELOR ÎN SISTEMELE CU


MICROPROCESOARE
Aşa cum s-a arătat anterior, un microprocesor primeşte, prelucrează şi furnizează
informaţii numai în cod binar, deoarece semnalele cu care acesta lucrează pot lua
numai două valori: nivel ridicat şi nivel coborât.
Sistemul de numeraţie în baza 2 foloseşte numai două valori pentru reprezentarea stării
unei variabile: 0 şi 1. Aceste două valori se mai numesc şi cifre binare sau, pe scurt,
biţi. În vorbirea uzuală există mai multe cuvinte care sunt asociate acestor două valori,
în funcţie de semnificaţia pe care le-o acordăm:
Bitul 1 adevărat pornit ridicat setat +5 V setat
Bitul 0 fals oprit coborât resetat 0V şters
Microprocesorul 8085 foloseşte grupuri de câte 8 sau 16 linii sau semnale logice,
cărora le corespund grupuri de 8 biţi (octeţi sau bytes) şi respectiv 16 biţi (cuvinte sau
words). Când ne referim la un octet, trebuie să avem în vedere atât numărul de biţi cât
şi ordinea în care aceştia sunt aranjaţi în cadrul octetului. Poziţia fiecărui bit o numim
rang şi acesta indică ponderea bitului respectiv în cadrul valorii numerice a octetului.
Ponderea unui bit este egală cu 2rangul bitului
9
L2 Introducere în sisteme cu microprocesoare – Software
Ca şi în zecimal, rangul cel mai mic (0) şi ponderea cea mai mică (20=1) o are ultima
cifră binară din dreapta. Ponderea creşte treptat, odată cu rangul, de la dreapta la
stânga, ultima cifră binară având rangul maxin (7) şi ponderea maximă (27). De aceea,
bitul de rang 0 se mai numeşte şi cel mai puţin semnificativ bit (LSB - Least
Significant Bit), iar bitul de rang 7 poarta numele de cel mai semnificativ bit (MSB -
Most Significant Bit). Spre exemplu, în cazul octetului 10011101:
Pondere 128 64 32 16 8 4 2 1
Pondere 27 26 25 24 23 22 21 20
Rang 7 6 5 4 3 2 1 0
Octet 1 0 0 1 1 1 0 1
spunem că biţii de rang 7, 4, 3, 2 şi 0 au valoarea 1, iar biţii de rang 6, 5 şi 0 au
valoarea 0. Valoarea numerică a octetului este egală cu suma tuturor biţilor înmulţiţi
fiecare cu ponderea sa, ceea ce este echivalent su suma ponderilor tuturor biţilor 1 ai
octetului respectiv. Pentru exemplul considerat, valoarea numerică este 128+16+8+4+1
= 157 în zecimal.
Aceleaşi reguli se aplică şi pentru cuvinte de 16 biţi, cu obsevaţia că în acest caz bitul
cel mai semnificativ este cel de rang 15. în plus, cei 16 biţi sunt adeseori considerati ca
fiind formaţi din doi octeţi: octetul superior sau MSB (Most Significant Byte) şi cel
inferior sau LSB (Least Significant Byte).
Pondere 215 214 213 212 211 210 29 28 27 26 25 24 23 22 21 20
Rang 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
octetul superior (MSB) octetul inferior (LSB)
Reprezentarea binară este destul de dificil de folosit, în special pentru numere mari, din
cauza numărului ridicat de cifre binare necesare pentru codificarea lor. O reprezentare
mai compactă este reprezentarea în baza 16 sau hexazecimală, care aduce numărul de
cifre chiar sub cel cu care suntem obişnuiţi din reprezentarea zecimală.
Avantajul ei este acela că trecerea de la reprezentarea binară la cea hexazecimală este
imediată, fiind bazată pe gruparea biţilor câte 4, începând cu LSB. În mod similar,
trecerea de la hexazecimal la binar se face uşor, prin expandarea separată a cifrelor
hexazecimale în grupuri de 4 biţi şi concatenarea acestora. Spre exemplu, şirul de biţi
1000101001110101 poate fi reprezentat în hexazecimal astfel:
Binar: 1000 1010 0111 0101
Hexazecimal: 8 A 7 5
Pentru a evita confuziile (deoarece numărul 1011 poate fi considerat ca fiind
reprezentat în binar, în zecimal cât şi în hexazecimal), numerele reprezentate în binar
sau în hexazecimal vor fi urmate de o literă care să indice baza de reprezentare:

10
SISTEME CU MICROPROCESOARE L2
B sau b - pentru codificarea binară (1010B = 0AH = 10)
H sau h - pentru hexazecimal (1011H = 0001 0000 0001 0001B).
Dacă într-un număr reprezentat în binar considerăm că un anumit bit poate lua orice
valoare (0 sau 1), pe rangul acelui bit vom folosi notaţia x (indiferent). Aceasta este o
notaţie abstractă, cu care operăm la nivel conceptual. Microprocesorul nu recunoaşte o
astfel de valoare, deci dacă acel număr va trebui să ajungă la microprocesor, va trebui
ca biţilor indiferenţi să le dăm totuşi una dintre valorile 0 sau 1.
O problemă importantă o constituie codificarea adreselor şi precizarea lungimii
intervalelor de adrese. Spre exemplu, aşa cum s-a arătat anterior, microprocesorul 8086
dispune de o magistrală de adrese formată din 16 linii. Cu ajutorul acestor linii pot fi
accesate un număr de 216 = 65536 de locaţii de memorie de 8 biţi (cu 16 biţi se pot
forma maximum 2 combinaţii distincte). Aceasta înseamnă că adresa cu valoarea
numerică cea mai mică (0) se poate scrie pe 16 biţi în hexazecimal sub forma 0000H
(16 biţi 0). Adresa maximă este 65535 şi poate fi scrisă în hexazecimal ca FFFFH
(16 biţi 1).
Dar 65536 = 216 = 26x210 = 26Kocteţi (Kilo-octeţi ) = 64Kocteţi (prin convenţie,
1Koctet = 210octeţi). Se observă că pentru exprimarea numărului de locaţii se pot folosi
multipli ai octetului după modelul din sistemul zecimal (2 =1024, care este cel mai
apropiat de 1000=103 , de unde şi numele de 1K). În mod similar, 220=22x10=(210)2
înseamnă 1M (mega), 230 reprezintă 1G (giga) ş.a.m.d. Aceşti multipli se aplică nu
numai pentru octeţi, ci pentru cuvinte de orice lungime. Spre exemplu, putem spune că
1 Koctet are 8Kbiţi (1Koctet=210octeţi = 8x210biţi = 8Kbiţi).
O altă problemă o constituie modul de execuţie a operaţiilor logice de către
microprocesorul 8086. Acestea sunt trei operaţii cu doi operanzi: AND, OR şi XOR şi
una cu un singur operand: NOT. Ele se execută separat asupra biţilor de pe acelaşi rang
ai operanzilor, respectiv asupra fiecărui bit separat (NOT), ca în exemplele de mai jos:

01101011 01101011 01101011


11000001 11000001 11000001 01101011
AND -------------- OR -------------- XOR -------------- NOT --------------
01000001 11101011 10101010 10010100

Operaţiile aritmetice în baza 2 sau baza 16 se efectuează în mod similar cu cele din
baza 10. Spre exemplu, operaţiile aritmetice pe care le poate efectua 8086 sunt cele de
adunare (ADD) şi de scădere (SUBstract) cu doi operanzi în baza 2:

01101011 11000101
01000001 01101110

11
L2 Introducere în sisteme cu microprocesoare – Software
ADD ------------------ ADD -------------------
10101100 100110011

Scăderea se efectuează prin adunarea descăzutului cu opusul scăzătorului:


Descăzut - Scăzător = Descăzut + (-Scăzător)
Opusul unui număr în baza 2 se mai numeşte şi complementul faţă de 2 (CM2).
Complementul faţă de 2 se calculează apelând la complementul faţă de 1 (CM1) sau
complementul bit cu bit al operandului:
CM2 = CM1 + 1
01101011 11000101
01000001 11101110
SUB ----------------- SUB ---------------
O00101010 111010111
fără împrumut cu împrumut
Spre exemplu, scăderile din exemplele de mai sus se efectuează prin parcurgerea
următorilor paşi:
CM1 10111110 00010001
01101011 11000101
CM2 10111111 00010010
ADD ---------------- ADD ---------------------------
100101010 --- 11010111
cu transport fără transport
Se observă că dacă apare transport la adunare înseamnă că nu apare împrumut la
scădere şi invers.
Operaţiile de adunare şi scădere se pot face şi în baza 16, într-un mod asemănător cu
cele din baza 10, dacă ţinem cont că între rangurile hexazecimale transportul şi
împrumutul se referă la 16 unităţi în loc de 10.

 PROGRAMUL MONITOR al Modulului Z3EV


Programul Monitor este un program instalat în memoria EPROM a sistemului, care
gestionează sistemul şi permite utilizatorului accesul soft la componentele interne.
Acesta dispune de facilităţile:
 vizualizarea şi modificarea conţinutului memoriei şi regiştrilor;
 execuţia continuă, pas cu pas, sau cu puncte de întrerupere a programelor;
 încărcarea unui program de la tastatură şi de la PC;
 interacţiunea cu utilizatorului cu sistemul folosind tastatura şi dispay-ul.

12
SISTEME CU MICROPROCESOARE L2
Vom descrie aici câteva din comenzile Monitor-ului şi tastele asociate din componenţa
modulului Z3EV:

RESET Comanda RESET este apelabilă prin apăsarea tastei Reset1


de pe tastatura sistemului. Aceasta este conectată fizic cu
intrarea RESET a microprocesorului. Este activă permanent şi la
acţionare provoacă resetarea microprocesorului şi iniţializarea
programului Monitor din memoria EPROM a sistemului. Se recomandă acţionarea ori
de câte ori dorim resetarea microprocesorului, respectiv a regiştrilor, regiştrilor
segment, etc.

Comanda CHG/RET este apelabilă prin apăsarea tastei 17 de


CHG/RET pe tastatura sistemului. Tasta aceasta are o dublă funcţie.
Funcţia CHG2 permite iniţierea sesiunii de modificare a
valorii curente afişate pe display3, funcţia RET4 permite terminarea
sesiunii de modificare. În sesiunea de modificare este evidentă apariţia
unui cursor pe display5.

Tastele săgeţi sunt folosite pentru deplasarea


cursorului pe display în timpul sesiunilor de
modificare. Deplasarea cursorului spre stânga se face
prin apăsarea succesivă a tastei 19, respectiv deplasarea cursorului spre
dreapta se face prin apăsarea tastei 18.

MEM
Comanda MEM este activată prin apăsarea tastei 16. Cu
ajutorul acestei comenzi se poate examina conţinutul
0
memoriei. Pe display este afişat doar un byte la un moment
dat. Odată ce tasta este apăsată, este cerută adresa celulei de memorie al
cărui conţinut dorim să îl vizualizăm, sistemul fiind setat direct în modul
modificare (Fig.2.3).
A d d r . s s s s : i i i i

Fig.2.3. Formatul adresei de memorie - general

După introducerea adresei care ne interesează, tasta CHG/RET trebuie apăsat pentru a
confirma terminarea sesiunii de introducere/modificare.
Pe display apare în acelaşi timp adresa de memorie specificată şi data corespondentă
acesteia (Fig.2.4).

1 tasta 20, vezi lucrarea L1


2 CHANGE
3 conţinutul unui registru, a unei locaţii de memorie, etc.
4 Return
5 display - afişaj
6 cifra hexazecimală corespondentă acestei taste este 0
13
L2 Introducere în sisteme cu microprocesoare – Software

s s s s : i i i i a x h i i

Fig.2.4. Formatul adresei de memorie – dată corespondentă

În stânga apare adresa în format segment. Caracterul care apare după litera a reprezintă
data în format ASCII1.
Numărul, care apare după litera h, reprezintă data în format hexazecimal.
Comenzile posibile care pot fi date în această sesiune sunt următoarele:
 pentru a trece la următoarea celulă de memorie se apasă INC(+);
 pentru a trece la celula de memorie pecedentă se apasă DEC(-);
 pentru a trece la prima celulă din memoria RAM se apasă FIRST:
 pentru a trece la ultima celulă din memoria RAM se apasă LAST:
 pentru a modifica data afişată pe display se apasă CHG/RET;
 pentru terminarea modificării se apasă CHG/RET.

Comanda REG permite vizualizarea/modificarea conţinutului


REG
tuturor regiştrilor microprocesorului: EAX, EBX, ECX, EDX,
1 ESI, EDI, EBP, ESP, EIP, EFLAGS.
Tasta care activează această comandă este tasta numărul 22.
După ce se apasă tasta, primul registru va fi afişat pe display (Fig.2.5).

R e g . E A X x x x x x x x x

Fig.2.5. Formatul pentru afişarea conţinutului unui registru

Comenzile posibile care pot fi date în această sesiune sunt următoarele:


 pentru a trece la următorul registru se apasă INC(+);
 pentru a trece la registrul precedent se apasă DEC(-);
 pentru a trece la primul registru se apasă FIRST:
 pentru a trece la ultimul registru se apasă LAST;
 pentru a modifica valoarea registrului se apasă CHG/RET;
 pentru terminarea modificării valorii registrului se apasă CHG/RET.

Comanda SEG permite vizualizarea/modificarea conţinutul


SEG
tuturor regiştrilor segment ai microprocesorului: CS, SS, DS,
2
ES, FS, GS. Tasta care activează această comandă este tasta
numărul 3 . După apăsarea tastei, este afişat primul registru
3

segment(Fig.2.6).

1 American Standard Code for Information Interchange, standard care asociază numere
caracterelor alfanumerice din alfabetul englezesc
2 cifra hexazecimală asociată acestei taste este 1
3 cifra hexazecimală asociată acestei taste este 2
14
SISTEME CU MICROPROCESOARE L2

S e g R e g . C S : x x x x

Fig.2.6. Formatul pentru afişarea conţinutului unui registru

Comenzile posibile care pot fi date în această sesiune sunt următoarele:


 pentru a trece la următorul registru se apasă INC(+);
 pentru a trece la registrul precedent se apasă DEC(-);
 pentru a trece la primul registru se apasă FIRST:
 pentru a trece la ultimul registru se apasă LAST;
 pentru a modifica valoarea registrului se apasă CHG/RET;
 pentru terminarea modificării valorii registrului se apasă CHG/RET.

Prin apăsarea acestei taste se incrementează valoarea adresei


INC(+)
celulei de memorie, registrului, registrului segment, sau a
3 punctului de întrerupere prezent pe display1. Tasta care
activează această comandă este tasta numărul 42.

Prin apăsarea acestei taste se incrementează valoarea adresei


DEC(-) celulei de memorie, registrului, registrului segment, sau a
7 punctului de întrerupere prezent pe display3. Tasta care
activează această comandă este tasta numărul 84.

FIRST Prin apăsarea acestei taste se poziţionează valoarea adresei


B celulei de memorie, registrului, registrului segment, sau a
punctului de întrerupere prezent pe display pe prima poziţie.
Tasta care activează această comandă este tasta numărul 125.

Prin apăsarea acestei taste se poziţionează valoarea adresei


LAST
celulei de memorie, registrului, registrului segment, sau a
F
punctului de întrerupere prezent pe display pe ultima poziţie.
Tasta care activează această comandă este tasta numărul 166.

1 practic ciclează aceste adrese “spre înainte”


2 cifra hexazecimală asociată acestei taste este 3
3 practic ciclează aceste adrese “spre înapoi”
4 cifra hexazecimală asociată acestei taste este 7
5 cifra hexazecimală asociată acestei taste este B
6 cifra hexazecimală asociată acestei taste este F
15
L2 Introducere în sisteme cu microprocesoare – Software

 VERIFICARE CUNOŞTINŢE
Întrebare 1: Definiţi un microprocesor.
Întrebare 2: Definiţi etapele prin care un program ajunge să fie executat de
microprocesor.
Întrebare 3: Care sunt componentele nucleului unui sistem cu microprocesor?
Întrebare 4: Care este rolul memoriei într-un sistem cu microprocesor?
Întrebare 5: Care tip de memorie nu îşi pierde conţinutul la oprirea alimentării?
Întrebare 6: Magistrala de adrese este bidirecţională?
Întrebare 7: Câte locaţii de memorie şi de I/E poate accesa 8086?
Întrebare 8: De ce are nevoie un sistem cu microprocesor de dispozitive de I/E?
Întrebare 9: Ce este un port de I/E?
Întrebare 10: Care este deosebirea dintre un dispozitiv de I/E şi un port de I/E?
Întrebare 11: Cum se mai numeşte registrul A al microprocesorului 8086? De ce?
Întrebare 12: Câţi biţi are cuvântul de stare al procesorului?
Întrebare 13: Ce sunt indicatorii de condiţii?
Întrebare 14: Ce este unitatea aritmetică şi logică?
Întrebare 15: Ce fel de operanzi prelucrează ALU?
Întrebare 16: Să se determine rezultatul următoarelor operaţii logice:
68 AND 4E 5A AND 0F 7F AND F0
53 OR D2 C3 OR 0F B5 OR F0
E7 XOR 3B A5 XOR FF A5 XOR 00
NOT 00 NOT 5A NOT FF
Întrebare 17: Să se determine operaţia şi operandul care forţează în 0 primii 4 biţi ai
celuilalt operand.
Întrebare 18: Să se determine operaţia şi operandul care forţează în 1 biţii de rang par
ai celuilalt operand.
Întrebare 19: Să se determine operaţia şi operandul care complementează biţii de rang
impar ai celuilalt operand.
Întrebare 20: Să se determine rezultatul următoarelor operaţii aritmetice realizând
calculele în binar:
10010111 + 01101000 01110101 + 11010010
10110010 - 01001001 01001110 - 01001111
Întrebare 21: Să se determine rezultatul următoarelor operaţii aritmetice efectuând
calculele în hexazecimal:
2A + 4C 4F + D0 15E6 + B0C9 809A + 9C4F

16
SISTEME CU MICROPROCESOARE L2
E7 - AA 5D - F4 B9CE - 4FA1 A83F - AF7E
Întrebare 22: Câţi biţi are un cuvânt la microprocesorul 8085?
Întrebare 23: Care este valoare numerică a octetului 10010110b?
Întrebare 24: Care este valoarea numerică a cuvântului 80A0h?
Întrebare 25: Care este reprezentarea binară a numărului 115?
Întrebare 26: Care este reprezentarea hexazecimală a numărului 4096?
Întrebare 27: Care este ponderea celui mai semnificativ bit al unui octet?
Întrebare 28: Care este ponderea celui mai puţin semnificativ bit al unui octet?
Întrebare 29: Care este ponderea celui mai puţin semnificativ bit al unui cuvânt de 16
biţi?
Întrebare 30: Care este relaţia dintre valoarea numerică şi valorile biţilor din
reprezentarea binară a unui octet?
Întrebare 31: Care este relaţia dintre valoarea numerică şi valorile cifrelor
hexazecimale din reprezentarea unui cuvânt de 16 biţi?
Întrebare 32: Care este reprezentarea în hexazecimal a numărului zecimal 307?
Întrebare 33: Care este reprezentarea binară a octetului D7?
Întrebare 34: Care este reprezentarea binară a cuvântului 2AEB?
Întrebare 35: Este reprezentarea binară mai avantajoasă decât cea hexazecimală?
Întrebare 36: Câţi octeţi se află între adresele 1800h şi 5400h?
Întrebare 37: Dacă adresa de început a unui interval de 4 octeţi este AC00h, care este
adresa ultimei locaţii a acelui interval?
Întrebare 38: Dacă adresa de sfârşit a unui interval de 32 .octe i este FFFFh, care este
adresa de început a acestuia?
Întrebare 39: Pentru un microprocesor care ar avea 12 linii de adresă, care ar fi spaţiul
de memorie adresabil?
Întrebare 40: Pentru un microprocesor care ar utiliza 16 linii de adresă pentru
adresarea spaţiului de I/E, care ar fi dimensiunea acestui spaţiu?
Întrebare 41: Unde este memorat programul Monitor?
Întrebare 42: Care sunt facilităţile programului Monitor?
Întrebare 43: Ce operaţie se realizează prin apăsarea tastei Reset?
Întrebare 44: Tasta Reset acţionează direct asupra Microprocesorului, sau este
controlată numai de programul Monitor?
Întrebare 45: Cum se poate modifica valoarea afişată pe display-ul modulului?
Descrieţi toate etapele necesare.
Întrebare 46: Cum se poate vizualiza conţinutul memoriei?
Întrebare 47: Cum se poate modifica conţinutul memoriei?
Întrebare 48: Care este formatul unei adrese de memorie?
Întrebare 49: Descrieţi comenzile/operaţiile care pot fi date în timpul unei sesiuni de
modificare a memoriei.
17
L2 Introducere în sisteme cu microprocesoare – Software
Întrebare 50: Cum se poate vizualiza conţinutul unui registru?
Întrebare 51: Cum se poate modifica conţinutul unui registru?
Întrebare 52: Care este formatul pentru afişarea unui registru?
Întrebare 53: Descrieţi comenzile/operaţiile care pot fi date în timpul unei sesiuni de
modificare valorii regiştrilor.
Întrebare 54: Cum se poate vizualiza conţinutul unui registru de segment?
Întrebare 55: Care este formatul pentru afişarea unui registru de segment?
Întrebare 56: Descrieţi comenzile/operaţiile care pot fi date în timpul unei sesiuni de
modificare valorii regiştrilor de segment.
Întrebare 57: Cum se poate realiza incrementarea/decrementarea unei valori afişate?
Întrebare 58: În modul de afişare/modificare a conţinutului memoriei cum va puteţi
poziţiona pe prima celulă de memorie?
Întrebare 59: În modul de afişare/modificare a conţinutului memoriei cum va puteţi
poziţiona pe ultima celulă de memorie?
Întrebare 58: Tastele FIRST şi LAST pot fi folosite numai în sesiunile de
afişare/modificare a conţinutului memoriei sau si în în sesiunile de afişare/modificare a
conţinutului regiştrilor şi regiştrilor de segment?
Întrebare 59: Programul Monitor poate executa programele introduse în modul pas cu
pas?
Întrebare 60: Programul Monitor poate fi editat şi modificat funcţie de cerinţele
operatorului?
Întrebare 61: Toate sistemele cu microprocesor dispun de un program Monitor?

18

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