Sunteți pe pagina 1din 15

Noiuni generale despre microprocesoare

Microprocesorul a aprut pentru prima dat n jurul anului 1970 i a fost folosit pentru
prima dat la calculatoarele de buzunar. n prezent el, microprocesorul, este folosit din ce n
ce mai des i reprezint elementul de baz a unui computer.
Microprocesorul reprezint unitatea central de prelucrare a informaiei dintr-un
sistem de calcul. El este realizat din unul sau mai multe circuite integrate. Circuitele integrate
sunt dispozitive microelectronice care cuprind de la zeci la zeci de milioane de componente
(rezistoare, diode, tranzistoare etc.) care sunt asociate n uniti funcionale ca atare, nu ca i
piese separate, care se prezint sub forma unuia sau a mai multor cipuri.
Primul microprocesor a fost integrat ntr-un calculator de buzunar n jurul anului 1970
i se baza pe o structur de 4 bii. Bitul este unitatea de msur pentru caitatea de informaie.
De atunci i pn n prezent microprocesoarele au evoluat semnificativ ele ajungnd chiar la
existena de multi-microprocesoare care au o putere de calcul sporit. Aceste multimicroprocesoare sunt create nu dintr-un singur cip ci din mai mult cipuri integrate n acelai
microprocesor. n ziua de azi exist microprocesoare bazate pe 4, 8, 16, 32 i 64 de bii.
ntr-un computer, care reprezint un aparat/dispozitiv programabil care primete o
serie de instruciuni i pe baza acelor instruciuni efectueaz anumite comenzi,
microprocesorul se afl pe placa de baz i reprezint elementul de baz a unui computer,
datorit faptului c el prelucreaz toate informaiile venite de la celelalte componente aflate n
computer. Pe lng aceasta el mai are rolul de a decoda i a efectua operaiile cerute de
programele aflate pe acel computer.
Microprocesorul computerului este numit CPU (Central Processing Unit= Unitatea
Principal de Prelucrare). n domeniul tehnologiei informaiilor (IT) CPU-urile sunt cele pe
32 i 64 de bii. Revoluia recent a microprocesoarelor este reprezentat de apariia acelor
multi-microprocesoare care au o putere de calcul foarte mare i care pot efecta o mulime de
instruciuni ntr-un interval de timp foarte scurt. Acestea pot conine de la 2 cipuri pn la 4
cipuri, fa de cele obisnuite care conin un singur cip.
Cele mai cunoscute i utilizate microprocesoare sunt cele create de dou mari firme n
domeniul IT, acestea fiind: AMD (Advanced Micro Devices) i Intel. Printre cele mai recente
microprocesoare produse de aceste firme se numr: AMD Phenom (4 cipuri), AMD Opteron
(4 cipuri), AMD Athlon 64 X2 (2 cipuri), Intel Core 2 Duo (2 cipuri), Intel Core 2 Quad (4
cipuri). Datorit faptului c multi-microprocesoarele conin mai multe cipuri acestea au un
pre de cumprare mai ridicat dect cele obinuite, bazate pe un singur cip.
Astfel putem spune c fr microprocesor, n ziua de astzi, nu are exista computerele,
iar fr computer transmiterea informaiei ar fi mult mai dificil. Astfle aceast component
este un lucru esenial al zilelor noastre.
Microprocesoarele difer ntre ele prin numrul de instruciuni pe care le pot executa,
viteza de execuie i cantitatea de memorie pe care o pot folosi. Ele sunt caracterizate de tip,
frecven de lucru i lungimea cuvntului.

Tipul microprocesorului definete apartenena microprocesorului la o familie de


microprocesoare care au caracteristici comune. Aceste caracteristici determin performanele
calculatorului : viteza de lucru,setul de instruciuni care sunt nelese i executate de procesor
etc. Fiecare tip de microprocesor este caracterizat printr-o arhitectur intern.
Pe calculatoarele IBM-PC, ct i pe cele compatibile IBM se ntlnesc microprocesoarele din
familiile INTEL 80x86, unde x=0, 1, 2, 3, 4, 5, 6, Cu ct x este mai mare, cu att
microprocesorul este mai performant (de exemplu, 80686) va putea nelege i executa
instruciunile unui program scris pentru un microprocesor mai puin performant (de exemplu,
80486).
Procesoarele folosite de calculatoarele IBM-PC sau compatibile IBM-PC sunt produse de
firme ca Intel, AMD, Cyrix, etc. Familia din care acestea fac parte se stabilete prin
compararea performanelor cu familiile de procesoare Intel: 286, 386, 486, Pentium,
PentiumII, PentiumIII, PentiumIV.
n cadrul aceleiai familii, microprocesoarele sunt compatibile ntre ele.
Frecvena de lucru a microprocesorului se msoar n megahertzi (MHz), adic n
milioane de impulsuri pe secund. De exemplu, dac un microprocesor are frecvena de 900
MHz nseamn un semnal cu 900 de milioane de impulsuri pe secund. Cu ct aceast
frecven este mai mare, cu att microprocesorul este mai performant, deoarece ea este direct
proporional cu viteza cu care microprocesorul execut instruciunile, deci cu viteza de lucru
a calculatorului.
Cuvntul microprocesorului reprezint numrul de bii ntotdeauna multiplu de octei
care pot fi prelucrai la un moment dat de ctre microprocesor (de exemplu 8 bii,16 bii,32
bii,64 bii). Cu ct cuvntul are mai muli bii, cu att viteza de lucru a microprocesorului este
mai mare i el este mai performant.
Toate aceste elemente determin viteza de lucru a microprocesorului, adic
determin ct de repede execut microprocesorul o instruciune. Viteza se msoar n
milioane de instruciuni pe secund - MIPS sau MFLOPS. Un calculator performant are o
vitez de execuie de ordinul a 2-30 MIPS.

Primul microprocesor considerat "standard", care impune conceptele privind aceast


modalitate de prelucrare a informaiei, a fost 8080 de 8 bii, realizat tot de Intel. Acest
microprocesor, proiectat de Masatoshi Shima, deschide seria generaiei a doua de
microprocesoare realizate n tehnologie NMOS. Ali reprezentani ale acestei generaii sunt :
Z80 - proiectat de aceiai specialiti i realizat de firma Zilog n 1976, M6800 - realizat de
Motorola i 8085 lansat de Intel n 1978. Microprocesorul Z80 a reprezentat unul din cele mai
performante microprocesoare de 8 bii, care prefigureaz performanele generaiei urmtoare
prin noile concepte implementate. Primul microprocesor de 16 bii - TMS 9900 apare n anul
1977, produs de Texas Instruments, care conceptual nu realizeaz salturi calitative.
A treia generaie de microprocesoare are ca prim reprezentant microprocesorul 8086 pe
16 bii, realizat de Intel in anul 1978 n tehnologie HMOS. La scurt timp apar : M 68000 produs de Motorola i Z 8000 - produs de Zilog, dar care nu se ridic la performanele
predecesorului su de 8 bii. Dei M 68000 este creditat mai performant de muli autori i
utilizatori, 8086 a fost microprocesorul standard al generaiei sale. n 1979 Intel lanseaz
microprocesorul 8088 - identic n interior cu 8086 (magistral intern pe 16 bii), dar n exterior
lucreaz pe 8 bii pentru a pstra compatibilitatea cu magistrala de 8 bii a sistemelor realizate
n
etapa
respectiv.
Cea de a treia generaie nu a nsemnat doar o extensie a magistralei de la 8 la 16 bii ci i
introducerea unor concepte noi. n paralel au fost realizate i coprocesoare matematice care, n
tandem cu microprocesorul standard, cresc viteza de execuie a operaiilor aritmetice. n paralel
cu microprocesoarele menionate au fost realizate i altele similare produse de alte firme
(National, Fairchild, RCA, Signetics etc). Perfecionri ale microprocesorului 8086 sunt aduse
de Intel prin realizarea n 1982 a microprocesorului 80186 / 80188.
Prototipul generaiei a patra este lansat n anul 1982 de Intel prin microprocesorul 80286. Acest
microprocesor cu magistral de 16 bii introduce ns o serie de noi concepte fundamentale :
memorie virtual, multitasking, protecie. Alte reprezentante ale generaiei lansate de Intel
sunt : 80386 de 32 de bii, lansat n 1986 (i coprocesorul 80387) i 80486 de 32 de bii, lansat
n 1989 (cu un an mai devreme dect se prognozase), care conine n acelai chip att
procesorul propriu-zis (80386) ct i coprocesorul (80387), fiind, datorit magistralei interne
comune, mai rapid dect tandemul 80386 - 80387

Microprocesorul poate s rmn o "cutie neagr" pentru muli utilizatori ai calculatorului...


Structura intern a microprocesoarelor
Microprocesorul este o unitate central de prelucrare (Central Processing Unit CPU) ncorporat ntr-o capsul de circuit integrat, el fiind coordonatorul tuturor operaiilor
efectuate de ctre calculator. Are rolul de a citi instruciunile dintr-o zon de memorie, de a
decodifica i executa comenzile corespunztoare.
Pentru ca microprocesorul s poat citi codul instruciunii care urmeaz a fi
decodificat i executat, el trebuie s genereze o adres care va fi pstrat n memorie pn
cnd din celula selectat pe baza acestei adrese va putea fi citit data cerut. Pentru a putea fi
memorat starea liniilor de adres n timpul operaiei de citire Microprocesorul 8080 este
proiectat cu o magistral de date extern de 8 bii. Aceasta nseamn c pot fi transferai pe
magistrala de date extern 8 bii.
Microprocesorul Intel are dou componente majore: unitatea de interfa cu magistrala (Bus
Interface Unit - BIU) i unitatea de execuie (Executive Unit - EU).

Unitatea de interfa cu magistrala transmite procesorului instruciuni i operanzi i


rezultatele unor prelucrri spre memoria intern sau dispozitivele de intrare/ieire.
Principalele componente ale sale sunt regitrii de segment, registrul pointer de instruciuni,
dispozitivul de adresare i coada fluxului de instruciuni.
Unitatea de execuie are rolul de a executa instruciunile care i sunt transmise de
ctre BIU. Principalele sale componente sunt regitrii generali, registrul de manevr pentru
memorarea operanzilor, unitatea aritmetico-logic (ALU) i registrul indicatorilor de stare i
control.
Magistralele cu ajutorul crora se realizeaz comunicarea dintre microprocesor i
celelalte componente ale sistemului de calcul sunt: magistrala de date (pe 16 bii), magistrala
de adres (pe 20 de bii) i magistrala de comenzi.
Sistemul de ntreruperi
Microprocesorul mai dispune de dou linii pentru semnalele de ntrerupere emise de
dispozitivele externe: linia INTR (Interrupt Request) i linia NMI (Non-Maskable
Interrupt). Pe linia INTR sosesc ntreruperi n urma crora unitatea central, n funcie de
valoarea indicatorului de validare a ntreruperilor (IF), execut diferite operaii. Dac IF
este ters (are valoarea 0) nseamn c ntreruperile semnalate pe linia INTR sunt mascate sau
dezactivate, ca urmare unitatea central le ignor i trece la instruciunea urmtoare. Dac IF
este poziionat (are valoarea 1) nseamn c ntreruperile de pe linia INTR sunt activate i
unitatea central oprete execuia normal a instruciunilor i pred controlul rutinei de tratare
a ntreruperilor. NMI este o linie prin care sosesc ntreruperi care anun evenimente critice.
Aceste ntreruperi nu pot fi dezactivate i unitatea central le va lua n considerare de fiecare
dat cnd acestea sosesc.
Sistemul de ntreruperi este simplu i uor de manevrat. Pot fi utilizate cel mult 256 de
tipuri de ntrerupere, fiecrui tip fiindu-i atribuit un cod specific. ntreruperile pot fi clasificate
n ntreruperi externe i ntreruperi interne. Cele externe sunt numite i ntreruperi hardware,
iar cele interne mai poart denumirea de ntreruperi software. Diferena esenial dintre cele
dou tipuri de ntreruperi este c cele externe sunt cauzate de dispozitivele externe, iar cele
interne sunt generate prin program, folosindu-se anumite instruciuni.
Tabela vectorilor de ntrerupere
Tabela vectorilor de ntrerupere permite asocierea dintre tipul ntreruperii (reprezentat
de un numr ntre 0 i 255) i rutina de tratare a ntreruperii. Fiecare intrare a tabelei ocup 4
bytes, ea coninnd adresa rutinei de tratare a ntreruperii. Tabela ocup prima zon a
memoriei interne i poate avea pn la 256 de intrri.
La apariia unei ntreruperi este suspendat execuia instruciunilor programului curent
i sunt salvate pe stiv registrul cu indicatorii de stare i control i adresa instruciunii
urmtoare; apoi este activat rutina de tratare a ntreruperii.
Unitatea aritmetic i logic
Pentru efectuarea operaiilor aritmetice procesorul are nevoie de circuite specializate
n acest sens. n aritmetica binar operaiile aritmetice pot fi descrise cu ajutorul unor funcii
logice, de aceea este normal ca circuitele respective s fie utilizate i pentru operaiile logice
propriu-zise. Aceste circuite utilizate de procesor pentru efectuarea operaiilor aritmetice i
logice poart denumirea de unitate aritmetic i logic. ALU face parte din unitatea de

execuie a microprocesorului, ea avnd i rolul de a gestiona indicatorii de stare i control ai


microprocesorului i de a manevra regitrii generali i operanzii instruciunilor. Regitrii i
cile de date interne sunt de 16 bii, deoarece se dorete mrirea transferurilor interne.
Coada de instruciuni
Unitatea de execuie nu are nici o legtur cu magistrala sistemului, cea care
efectueaz toate operaiile necesare cu magistrala fiind unitatea de interfa cu magistrala. n
timpul n care unitatea de execuie se ocup cu execuia instruciunilor, unitatea de interfa cu
magistrala ncarc instruciunile ntr-o memorie special de tip RAM (Random Acces
Memory) numit coada fluxului de instruciuni. Aceast memorie are o dimensiune de 4
bytes n cazul microprocesoarelor 8088 i 6 bytes n cazul 8086. Unitatea de execuie preia
cte o instruciune din coada fluxului de instruciuni; apoi o execut.
n majoritatea cazurilor coada fluxului de instruciuni conine cel puin un byte al
fluxului de instruciuni i unitatea de execuie nu mai trebuie s atepte ncrcarea
instruciunii care urmeaz a fi executat. La un moment dat n coada fluxului de instruciuni
sunt memorate instruciunile care se afl n locaiile de memorie imediat urmtoare locaiei de
memorie n care se afl instruciunea care se execut la acel moment. Dac este executat o
instruciune care transfer controlul unei locaii de memorie, coada fluxului de instruciuni
este tears, se ncarc instruciunea de la noua adres i unitatea de interfa cu magistrala
ncepe rencrcarea cozii fluxului de instruciuni cu instruciunile urmtoare.
Dispozitivul de adresare
Microprocesorul trebuie s poat adresa att instruciunile ct i datele de care
instruciunile au nevoie atunci cnd sunt executate. Adresa locaiei de memorie din care se va
ncrca o instruciune este suma dintre o adres de segment i un deplasament. Pentru
adresarea datelor, microprocesorul ofer cteva modaliti de adresare.

Segmentarea memoriei
Microprocesoarele 8086 i 8088 pot adresa 1 MB de memorie care sunt grupai n mai
multe segmente. Un segment de memorie este o unitate logic de memorie care poate avea cel
mult 64 KB. Fiecare segment de memorie este alctuit din mai multe locaii de memorie
consecutive i poate fi considerat ca o unitate care poate fi adresat independent. Fiecare
segment este caracterizat printr-o adres de baz care reprezint adresa locaiei de nceput a
segmentului i este exprimat n numr de blocuri de 16 bytes, numite paragrafe. Ca urmare,
toate segmentele ncep de la o adres care este un multiplu de 16. Dou segmente se numesc
adiacente dac adresa de nceput a unuia dintre ele este cu 1 mai mare dect adresa de sfrit a
celuilalt. Dou segmente sunt parial suprapuse dac adresa de nceput a unuia se afl ntre
adresa de nceput i cea de sfrit a celuilalt. Dou segmente sunt suprapuse complet dac
adresele lor de nceput coincid. n toate celelalte cazuri segmentele se numesc disjuncte.
n funcie de necesiti o anumit aplicaie (program) utilizeaz segmentele n mod
diferit. Segmentele care pot fi adresate n mod curent ofer 64 KB pentru cod, 64 KB pentru
stiv i 64 KB pentru date. Pentru a utiliza un spaiu de lucru mai mare, trebuie gestionate
segmentele de memorie n funcie de necesiti.
Adrese fizice i adrese logice

Adresa fizic este o valoare reprezentat pe 20 de bii care identific n mod unic
fiecare locaie de memorie aflat n spaiul de adresare. Ca urmare aceast adres poate fi un
numr cuprins ntre 0 i 220-1.
Pentru a nu depinde de locul n care este pstrat codul n memorie, programele
folosesc adresele logice n locul celor fizice. Adresa logic este dat de o valoare de baz de
segment i o valoare de deplasament. Valoarea de baz a segmentului indic adresa primului
byte al segmentului care conine locaia i este exprimat n paragrafe. Deplasamentul
reprezint numrul de octei dintre locaia respectiv i nceputul segmentului. Att adresa de
baz ct i deplasamentul sunt reprezentate pe 16 bii.
Este posibil ca mai multe adrese logice s localizeze o aceeai locaie de memorie atunci cnd
aceasta face parte din segmente diferite. De exemplu adresele logice F000:FFF0 i FFFF:0000
indic aceeai locaie de memorie i anume cea care are adresa fizic FFFF0. Generarea
adresei fizice cu ajutorul adresei logice se realizeaz nmulind cu 16 valoarea bazei
segmentului (shiftare spre stnga cu 4 poziii) i adugnd deplasamentul.
Mecanisme de adresare
Calculele de adres sunt efectuate de unitatea de interfa cu magistrala, cu ajutorul unei
uniti de calcul, specifice, numit ADR i a unor regitri speciali fiecare avnd o capacitate de
16 bii.
Primele generaii de calculatoare aveau o memorie de 1 MB. Primele 10 blocuri de memorie
(640 KB) formeaz memoria RAM, urmtoarele 5 fiind folosite pentru memoria ecran i
reinerea coninutului memoriei ROM n timpul funcionrii sistemului. Pentru a putea
codifica n mod unic fiecare din cele 220 de locaii de memorie diferite, o adres trebuie s fie
reprezentat pe 20 de bii. Magistrala de adrese are capacitatea necesar pentru a transmite cei
20 de bii deodat, ns nu se poate spune acelai lucru despre magistrala de date care are o
capacitate de 16 bii. Prin convenie adresa de nceput a fiecrui segment este un multiplu de
16, iar un segment poate avea cel mult 64 KB. Datorit acestui fapt cei mai nesemnificativi 4
bytes ai adresei de nceput a segmentului vor fi 0 (n baza 2 un multiplu de 16 are ultimele 4
cifre ntotdeauna 0). Din acest motiv aceti 4 bii nu mai trebuie memorai i ca urmare
regitrii de segment vor conine numai restul celor 16 bii. Pentru a specifica deplasamentul
(offset) sunt folosii tot 16 bii.
O adres virtual este compus din dou numere reprezentate fiecare pe 16 bii, unul
reprezentnd coninutul registrului de segment, iar al doilea deplasamentul n cadrul
segmentului. Adresa fizic este calculat de ctre BIU nmulind cu 16 primul numr i
adunnd la rezultat cel de-al doilea numr.
Mecanismul descris este tipic pentru procesorul 8086 i poart denumirea de mod real
(Real Adress Mode). La microprocesoarele 80286 apare nc un mod de adresare, denumit
mod protejat (Protected Virtual Address Mode), iar o dat cu apariia procesorului 80386 sunt
introduse modul paginat i modul virtual 8086. Aceste noi modalitii de adresare au fost
introduse pentru a permite adresarea de ctre un calculator IBM-PC a mai mult de 1 MB de
memorie.
Implementarea stivei

Stiva este o zon de memorie folosit pentru a stoca datele temporare. Deosebirea
esenial dintre stive i alte segmente de memorie este faptul c datele de pe stiv sunt stocate
ncepnd de la adresele mai mari de memorie i continund spre adrese mai mici. La nceput
stiva este un segment de memorie neiniializat care are o dimensiune fix. n timp ce sunt
adugate informaii n stiv dimensiunea stivei "crete" de la adresele mari spre adresele mai
mici, iar cnd sunt eliminate informaii, stiva se "micoreaz" n sens invers.
Numrul de stive este limitat numai de spaiul de memorie disponibil n sistem, iar
dimensiunea unei stive nu poate depi 64 KB. Dac se extinde stiva peste aceast
dimensiune, informaiile adugate vor nlocui informaiile de la nceputul stivei. La un
moment dat nu poate fi adresat direct dect o stiv, ea purtnd denumirea de stiv curent.

Registrii Microprocesorului I8080


Acest microprocesor are urmtorii regitri:
1. Acumulatorul (A) este registrul principal cu ajutorul cruia se ndeplinesc toate
operaiile arotmetico-logiceadic un operator totdeuna se afl n acumulator.

2. Registrul temporal (Temporal) la ndeplinirea operaiei aritmetico-logice a 2 operaii


este transferat n registrul temporal, unde n blocul aritmetico-logic are loc execuia
operaiilor (scderea, adunarea logic...).
3. Registrul de uz general sunt 6 regitri: B, C, D, E, H, L sunt de 8 bii, ns dac vor
figrupai cte 2 n perechi obinem 3 perechi a cte 16 bii (i atunci ei vor fi B, D, H).
4. Registrul fanioanelor (drapel) este de 8 bii
8
7
6 5
4
3
2
1
0
1
- AC
- aritmetico-logiceapare
P
C
F = C fanionul transportului S dacZ n urma
operaiei
transport n
bitul 8 (1 logic) atunci C=1 n caz contrar C=0
0111 0111
Ex:
C=1
+ 1001 0001
1 0000 1000
P fanionul paritii
n urma efecturii operaiei aritmetico-logice n rezultat obinem un
numr, atunci cnd suma unitilor n acest numr este par atunci P = 1, iar dac suma este
impar atunco P=0. Din exemplul de mai sus P=0
F = AC transport auxiliar AC=1 dac apare transport din tetrada inferioar n cea
superioar iar dac nu AC=0. Ex de mai sus AC=0.
Z fanionul zeroului, Z =1 dac n urma operiei aritmetico-logice reyultatul este 0 (cnd
obinem n totalitate zerouri 0000 0000), n caz contrar Z=0, din exemplul de mai sus Z=0.
S fanionul semnului dac n bitul 7 avem unitate atunci numrul este negativ i S=1 (-), n
caz contrar S=0 (+), n exemplul de mai sus S = 0

Ex: 37 + 99 = 136 cod zecimal; 37/16 = 2 si 5 rest, 99/16 = 6 i 3 rest 25h+63h = 88


h cod hexazecimal;
0010 0101
+ 0110 0011
C = 01000 1000

cod binar
88h

P=1
AC = 0
Z=0
S=1
Ex: 233 + 248 = 481 cod zecimal; 233/16 = 14 si 9 rest, 248/16 = 15 i 8 rest
E9h+F8h cod hexazecimal;
1110 1001
1111 1000
C = 11 1110 0001
+

P=1
AC = 1

cod binar

Z=0
S=1
Imultirea
Ex: 7Bhx91h = 11h cod hexazecimal;
0111 1011
x 1001 0001
C = 00001 0001

cod binar
11h

P=1
AC = 0
Z=0
S=0
SAU inclusiv
Ex: 78h 91h = 88 h cod hexazecimal;
0111 1011
1001 0001
C = 01110 1010

cod binar
88h

P=0
AC = 0
Z=0
S=1
Ex: 7Bh 9Eh cod hexazecimal;
0111 1011
1001 1110
C = 1 11101 1101
-

P=1
AC = 1
Z=0
S=1

cod binar

Instruciunile microprocesorului Intel 8080


Ele se impart n 5 grupe:
1.
2.
3.
4.
5.

Instruciuni de transfer - 12
Instruciuni aritmetice 19
Instruciuni logice 20
Instruciuni de salt 27
Instruciuni auxiliare 12 15

1. Intruciuni de transfer:
a) MOV r1, r2 ceia ce ar nsemna (r 1) (r2) se va transfera coninutul
registrului r2 n registrul r1. n loc de r1 i r2 poate fi oricare din regitrii B, C, D, E, H,
L; ex: MOV B,D D se include n B.
b) 1. MOV r,M (r)(M(H,L)) coninutul memoriei adresa creia este indicat
de perechea de regitri H,L se transfer n registrul r
2. MOV M,r (M (H,L))(r) coninutul registrului r se va transfera pe
adresa indicat de regitrii H, L.
H baytul inferior al adresei, L baytul exterior al adresei
c) MVI r,data8 (r)(B2) coninutul baztului 2 se transfer n registrul r (r ia
valoarea unuia din register B, C, D, E). ex: MVI H,83h registrul H va lua valoarea
83.
d) MVI M,data8 (M(H,L))(B2) coninutul baytului 2 se transfer n memoria
adresa careia este indicat de perechea de regitri H,L.
e) LXI rp,data16 (rp regitri perechi); (rH,rL) (B3,B2); H-superior, L-inferior;
- coninutul baitului 3 i baztului 2 al instruciunii se transfer n regitrii perechi r p;
ex: LXI D,8257h - D82h E57h
f) LDA addr (A) (M(B2,B3)) coninutul de memorie adresa creia este
indicat de baytul 2, baytul 3 al instruciunii se transfer n accumulator; LDA 85 70 h
(A)(33h)
B1 B3 B2
g) STA addr(M(B2,B3))(A) coninutul acumulatorului este transferat n
memorie adresa careia este indicat de baytul 2, baytul 3 al instruciunii.

h) LDAX rp (A)(M(rH,rL)) (rp- D,B) coninutul memoriei adresa creia este


indicat de perechile de regitri rH, rL se transfer n accumulator.
i) STAX rp (M(rH,rL)) (A) coninutul memoriei adresa creia este n
acumulator se transfer n perechile de regitri.
j) XCHG (H,L)(D,E) schimb coninutul regitrilor H,L n D,E i invers
HD D H L E EL
k) LHLD addr (L)(M(B3,B2)), (H) (M(B3,B2+1))
l) SHLD addr (L)(M(B3,B2-1)), (H) (M(B3,B2))
2. Instruciuni aritmetice
Aceste instruciuni ndeplinesc operaii de adunare cu transport, scdere cu mprumut,
incrimentare, decrementare, corecie zecimal.
1) ADD r (A)(A)+(r). la coninutul acumulatorului se adun coninutul registrului
r. reyultatul se nscrie n accumulator. n urma acestei operaii se schimb toate fanioanele
ADD B (A)(A)+(B); ex: A = 55h, B=ABh (A)55h+ABh 00h
0101 0101
1010 1011
1 0000 0000
2) ADD M (A) (A)+(M(H,L)) la coninutul acumulatorului se adun coninutul
memoriei adresa creia este indicat de perechea de regitri H,L rezultatul se nscrie n
accumulator. Coninutul fanioanelor se schimb.
3) ADI data8 (A) (A)+(B2) la coninutul baitului 2 al instruciunii i rezultatul se
nscrie n accumulator; ex: ADI 73h (A) (A)+(73h)
4) ADC r (A) (A)+(r)+(FC) la coninutul acumulatorului se adun coninutul
registrului r i coninutul fanionului C. Rezultatul se nscrie n acumulator. Coninutul
fanioanelor se schimb.
5) ADC M (A) (A)+(M(H,L))+(FC) la coninutul acumulatorului se adun
coninutul memoriei adresa creia este indicat de perechea de regitri H,L i coninutul
fanionului C. Rezultatul se nscrie n acumulator. Coninutul fanioanelor se schimb.
6) ACI data8 (A) (A)+(B2)+FC - la coninutul acumulatorului se adun coninutul
baytului 2 i coninutul fanionului C. Rezultatul se nscrie n accumulator. Coninutul
fanioanelor se schimb.
7) SUB r (A) (A)-(r) din coninutul acumulatorului se scade coninutul registrului
r, rezultatul se nscrie n acumulator.
Ex: A=33h-C=11h (A) 22h
8) SUB M (A) (A)-(M(H,L)) din coninutul acumulatorului se scade coninutul
memoriei adresa creia este indicat de perechea de regitri H,L. Rezultatul se nscrie n
acumulator. Coninutul fanioanelor se schimb.
9) SUI data8 (A) (A)-(B2) din coninutul acumulatorului se scade coninutul
baytul 2. Rezultatul se nscrie n acumulator. Coninutul fanioanelor se schimb.
10) SBB r (A) (A)-(r)-(FC) din coninutul acumulatorului se scade coninutul
registrului r i mprumutul fanionului C. Rezultatul se nscrie n acumulator. Coninutul
fanioanelor se schimb.
11) SBB M (A) (A)-(M(H,L))-(FC) din coninutul acumulatorului se scade
coninutul memoriei adresa creia este indicat de perechea de regitri H,L i mprumutul
fanionului C. Rezultatul se nscrie n acumulator. Coninutul fanioanelor se schimb.
12) SBI data8 (A) (A)-(B2)-FC - din coninutul acumulatorului se scade coninutul
baytului 2 i mprumutul fanionului C. Rezultatul se nscrie n acumulator. Coninutul
fanioanelor se schimb.

13) INR r (r) (r)+1 incrimentarea. La coninutul registrului r se adun +1,


rezultatul se nscrie n registrul r. ex: INR D D=D+1=EF+1=11h
14) INR M (M(H,L)) (M(H,L)) + (1) La coninutul memoriei adresa creia este
indicat de perechea de regitri H,L se adun +1, rezultatul se nscrie n memoria adresa
creia este indicat de perechea de regitri H,L.
15) INX rp incrimenteaz coninutul perechilor de regitri (rHrL) (rHrL)+(1); INX
D (D,E) (D,E)+(1) se aduna la registrul E, dac acest registru e transpus se adaug la D.
16) DCR r (r) (r)-(1) decrementarea. Din coninutul registrului r se scade -1,
rezultatul se nscrie n registrul r. Coninutul fanioanelor se schimb.
17) DCR M (M(H,L)) (M(H,L)) - (1) Din coninutul memoriei adresa creia este
indicat de perechea de regitri H,L se scade-1, rezultatul se nscrie n memoria adresa creia
este indicat de perechea de regitri H,L.
18) DCX rp (rp) ( rp)-(1) din coninutul perechilor de regitri rp se scade -1,
rezultatul se nscrie n perechea de regitri rp.
19) DAD rp (H,L) (H,L)+(rp) adunarea de 2 bayi.
20) DAA corecia zecimal a acumulatorului.
Exemplu:
Addr 8200h = (Addr 8201-73h)+(RgD-RgE)
18h

15h ACh

LDA8201h
(A) (M(8201h))
SUI 73h
(A) (A)-(73h)
MOV B,A
(B) (A)
MOV A,D
(A) (D)
SUB E
(A) (A)-(E)
ADD A,B
(A) (A)+(B)
STA 8200
(M(8200h)) (A)
RST 32h. nchide programul

A=18h
A=18h-73h=A5h
B=A5h
A=15h
A=15h-ACh=69h
A=A5h+69h=0Eh
(M(8200h)) = 0Eh

3. Instruciuni logice ndeplinesc urmtoarele operaii: logica I, logica SAU,


logica NU, logica SAU exclusive, operaiile de deplasare, operaiile de comparare.
1. Instruciunea ANA r (A)(A) (r) coninutul acumulatorului se expune
logicii I cu coninutul registrului r. Rezultatul se nscrie n acumulator. Fanionul C i AC nu
se schimb.
2. ANA M (A)(A) (M(H,L)) coninutul acumulatorului se expune logicii I cu
coninutul memoriei adresa creia este dat de perechea de regitri H,L rezultatul se nscrie n
acumulator. Fanionul C i AC nu se schimb.
3. ANI data8 (A)(A) (B2) coninutul acumulatorului se expune logicii I cu
coninutul Baytului 2 al instruciunii. Rezultatul se nscrie n acumulator. Fanionul C i AC nu
se schimb.
4. ORA r
(A)(A) (r) coninutul acumulatorului se expune logicii SAU cu
coninutul registrului r. Rezultatul se nscrie n acumulator. Fanionul C i AC nu se schimb.
5. ORA M (A)(A) (M(H,L)) coninutul acumulatorului se expune logicii SAU
cu coninutul memoriei adresa creia este dat de perechea de regitri H,L rezultatul se nscrie
n acumulator. Fanionul C i AC nu se schimb.

6. ORI data8 (A)(A) (B2) coninutul acumulatorului se expune logicii SAU cu


coninutul Baytului 2 al instruciunii. Rezultatul se nscrie n acumulator. Fanionul C i AC nu
se schimb.
7. XRA r (A)(A) (r) coninutul acumulatorului se expune logicii SAU
exclusiv cu coninutul registrului r. Rezultatul se nscrie n acumulator. Fanionul C i AC nu
se schimb.
8. XRA M (A)(A) (M(H,L)) coninutul acumulatorului se expune logicii SAU
exclusiv cu coninutul memoriei adresa creia este dat de perechea de regitri H,L rezultatul
se nscrie n acumulator. Fanionul C i AC nu se schimb.
9. XRI data8 (A)(A) (B2) coninutul acumulatorului se expune logicii SAU
exclusiv cu coninutul Baytului 2 al instruciunii. Rezultatul se nscrie n acumulator. Fanionul
C i AC nu se schimb.
10. CMA inversarea coninutului acumulatorului (A) () toi biii 1 trec n 0
i invers.
11. CMC inversarea coninutul fanionului C (FC) (FC)
12. STC instalarea n 1 a fanionului C
(FC) (1)
Instruciuni de comparare
13. CMP r (A) (r) daca A=r atunci fanionul Z este 1, A<r atunci fanionul C este 1
14. CMP M (A) (M(H,L)) daca A=(M(H,L)) atunci fanionul Z este 1, A<(M(H,L)) atunci
fanionul C este 1
15. CPI data8 (A) (B2) daca A= B2 atunci fanionul Z este 1, A< B2 atunci fanionul C
este 1.
Instruciuni de deplasare
16. RRC deplasarea acumulatorului la dreapta
FC

00111011

2
10011101
1
11001110
0
01100111
17. RLC deplasarea acumulatorului la stnga.
A

FC

00111011

1
1
2

01110110
11101100
11011001

18. RAR deplasarea ciclic a acumulatorului la dreapta

FC

0
1

00111011
00011101

1
0

10001110
11000111

19. RAL deplasarea ciclic a acumulatorului la stnga


A

FC

1
1
1
2

00111011
01110110
11101100
11011000

2
Ex: Rg B = (Rg A Rg H)
13h

SUB H
RRC
RRC
ORA L

MOV H,A
LDA 8200h
SUI 83h
RLC
RLC
RLC
ANA C

ADD H
MOV B,A
RST 32h

99h

3
Rg L+(Addr8200h 83h)
11h

31h

Rg C
15h

(A)(A) - (H)
A= 7Ah = 01111010
00111101
A=3Dh
10011110
A=9Eh
(A)(A)
(L)
10011110
9Eh
00010001
11h
10011111 =
9F
A= 9F
(H) (A)
H=9F
(A) (M(8200))
A=31h
(A) (A)-(83h)=31h-83h A=AEh
10101110 01011101
A=5D
01011101 10111010
A=BAh
10111010 01110101
A=75h
(A) (C) (A)
01110101
75h
00010101
15h
00010101
= 15h
A=15h
(A) (A) + (H) =15h+9Fh A=B4h
(B) (A)
B=B4h

4. Instruciuni de salt exist 2 tipuri de instruciuni de salt:


a) necondiionate 1. JMP addr are loc salt fr nici o condiie la adresa indicat de
baytul 2 i baytul 3 al instruciunii. Ex:
MOV ...
M1: RRC ...
ADD ...
SUB ...

JMP M1
b) condiionate 1. JC addr
FC=1 are loc salt la adresa indicat de baytul 2 i
baytul 3 atunci cnd fanionul C=1, n caz contrar se execut instruciunea urmtoare.

da
C=1

nu

2. JNC addr FC=0 are loc salt la adresa indicat de baytul 2 i baytul 3 atunci
cnd fanionul C=0, n caz contrar se execut instruciunea urmtoare.
3. JZ addr FZ=1 are loc salt la adresa indicat de baytul 2 i baytul 3 atunci
cnd fanionul Z=1, n caz contrar se execut instruciunea urmtoare.
4. JNZ addr
FZ=0 are loc salt la adresa indicat de baytul 2 i baytul 3 atunci
cnd fanionul Z=1, n caz contrar se execut instruciunea urmtoare.
5. JM addr FS=1 are loc salt la adresa indicat de baytul 2 i baytul 3 atunci
cnd fanionul S=1, n caz contrar se execut instruciunea urmtoare.
6. JP addr FS=0 are loc salt la adresa indicat de baytul 2 i baytul 3 atunci
cnd fanionul S=0, n caz contrar se execut instruciunea urmtoare.
7. JPE addr
FP=1 are loc salt la adresa indicat de baytul 2 i baytul 3 atunci
cnd fanionul P=1, n caz contrar se execut instruciunea urmtoare.
8. JPO addr FP=0 are loc salt la adresa indicat de baytul 2 i baytul 3 atunci
cnd fanionul P=0, n caz contrar se execut instruciunea urmtoare.
Instruciuni de chemare a subrogramelor
CALL addr - necondiionat
RET
- de rentoarcere
JC
- de chemare a subrogramului condiionat
CR
- de rentoarcere din subrogram.

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