Documente Academic
Documente Profesional
Documente Cultură
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
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)
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
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.
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:
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
12
SISTEME CU MICROPROCESOARE L2
Vom descrie aici câteva din comenzile Monitor-ului şi tastele asociate din componenţa
modulului Z3EV:
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
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).
s s s s : i i i i a x h i i
Î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.
R e g . E A X x x x x x x x x
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
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