Sunteți pe pagina 1din 68

Universitatea din Craiova

Facultatea de Automatic, Calculatoare i Electronic


Catedra de Ingineria Calculatoarelor i Comunicaii

Arhitectura
Calculatoarelor
Stiva

Ctlina Manca
catalina.mancas@yahoo.it

Dan Manca
dan.mancas@netdania.net

Astzi...
Ultimul curs

ARHITECTURA CALCULATOARELOR Stiva

Astzi...
Ultimul curs
Stiva:
Noiuni i definiii;
Categorii;
Instruciuni de lucru cu stiva la microprocesorul I8080;

Instruciuni pentru apelul de proceduri la microprocesorul


I8080.

ARHITECTURA CALCULATOARELOR Stiva

Stiva: Definiie
O colecie de date (d.p.d.v. informaional);
O reuniune de registre (d.p.d.v. structural);
O poriune de memorie (d.p.d.v. structural);
O list (d.p.d.v. al structurilor de date).

ARHITECTURA CALCULATOARELOR Stiva

Stiva: Definiie
O colecie de date ce sunt plasate n locaii
succesive de memorie sau ntr-o reuniune de registre,
prevzute cu mecanisme specifice de acces;

O reuniune de registre dotate cu un mecanism


specific de acces printr-un punct de acces, care se
numete vrful stivei;
O poriune de memorie la care accesul se face
printr-o locaie unic, numit vrful stivei;
O list de tip LIFO (Last In First Out).

ARHITECTURA CALCULATOARELOR Stiva

Stiva: Alte definiii...


Lungimea stivei: numrul de elemente dintr-o stiv;
Vrful stivei: ultimul registru sau ultima locaie de
memorie cu care s-a operat;

Evidena vrfului stivei se realizeaz cu un contor de


stiv sau numrtor de stiv numit stack pointer (SP);
ntotdeauna valoarea SP reprezint adresa vrfului stivei;
Asupra stivei se pot defini dou operaii:
Introducerea (inserarea) de noi elemente n stiv
operaia de scriere n stiv, numit PUSH;
Extragerea (eliminarea) elemetelor din stiv operaia
de citire din stiv, numit POP.

Dup fiecare operaie PUSH sau POP se modific SP.


ARHITECTURA CALCULATOARELOR Stiva

Stiva: Alte definiii...


Dimensiunea SP depinde de dimensiunea stivei;
Dac SP are n bii atunci mrimea stivei este de 2n
elemente;

Orice operaie cu stiva are loc numai prin vrful stivei;


De aceea, se spune c vrful stivei este mobil;
Stare de plin: momentul n care toate elementele stivei
sunt pline sau ocupate;
Stare de gol: momentul n care s-a extras i ultimul
element din stiv, aflat n baz;
Stiva prezint doi indicatori de stare, ce indic starea de
plin respectiv starea de gol a unei stive.

ARHITECTURA CALCULATOARELOR Stiva

Stiva: Alte definiii...


PARTEA
LIBER

PLAFON

VRF

PARTEA
OCUPAT

BAZ

Orice stiv are o baz (de unde ncepe umplerea) i un


palier superior numit plafon;
Poriunea ocupat: de la baz pn la vrful stivei inclusiv;
Poriunea liber: de la vrful stivei pn la plafon.
ARHITECTURA CALCULATOARELOR Stiva

Stiva: Categorii
Stiv hardware: definit pe grupuri de registre;
Stiv software: definit n memoria calculatorului.

ARHITECTURA CALCULATOARELOR Stiva

Stiva Hardware
O colecie de registre la care mecanismul de acces se face
prin vrful stivei:
definit de contorul stivei (SP);
reprezint ultimul registru cu care s-a operat;

Registrul tampon al stivei (SBR - Stack Buffer Register),


care comunic cu magistrala de date (DATA BUS);
3 indicatori de stare ai stivei:
P: indicatorul de plin;
G: indicatorul de gol;
E: indicatorul de eroare.

ARHITECTURA CALCULATOARELOR Stiva

10

Stiva Hardware
Dou operaii: PUSH i POP ;
1) PUSH: nscrierea datei, memorate din SBR n stiv.
Paii de execuie:
1. Se testeaz indicatorul P:

Dac P=1 => stiva este plin, se genereaz eroare E=1 i


operaia se ncheie;

Dac P=0, se trece la pasul urmtor.

2. Se incrementeaz SP;
3. Data din SBR se introduce n vrful stivei;
4. Dac valoarea nou a SP este 2k-1 atunci se seteaz
indicatorul P (P=1);
5. Stop operaie.

ARHITECTURA CALCULATOARELOR Stiva

11

Stiva Hardware
2) POP: extragerea datei din vrful stivei, transferul ei n
SBR dup care are loc decrementarea SP-ului.

Paii de execuie sunt urmtorii:


1. Se testeaz indicatorul G:

Dac G=1 => stiva este goal, se genereaz eroare E=1 i


operaia se ncheie;

Dac G=0, se trece la pasul urmtor.

2. Se citete registrul din vrful stivei i se transfer n SBR;


3. Se decrementeaz SP-ul pentru a defini noul vrf al stive;
4. Dac valoarea nou a SP devine 2k-1, atunci se seteaz
indicatorul G (G=1);

5. Stop operaie.

ARHITECTURA CALCULATOARELOR Stiva

12

Stiva Hardware
n
INDICATORI DE STARE

2k-1
E

2k-2
.
.
.
.
.

PUSH
POP

0 1 ........
INC

PLAFON

(k - 1)

SP

.
.
.

VARF

BAZA

DEC
0 1 .......

(n - 1)

SBR
n
MAGISTRALA DE DATE

ARHITECTURA CALCULATOARELOR Stiva

13

Stiva Software
Se definete n spaiul memoriei;
Reprezint un bloc continuu de locaii de memorie din MP;
Dimensiunea stivei: memorarea:
limitei superioare i
limitei inferioare;

Limite: adrese de memorie memorate n dou registre


generale din CPU (REG1 i REG2);
REG 1 din CPU indic plafonul stivei;
REG 2 din CPU indic baza;
Evidena vrfului stivei se face tot prin SP i care este
definit n REG 3 din CPU.

ARHITECTURA CALCULATOARELOR Stiva

14

Stiva Software
Orice operaie cu stiva trebuie s nceap prin a compara
SP cu coninutul registrelor REG1 sau REG2;
La o operaie PUSH trebuie s se compare SP cu adresa
plafonului, n timp ce la o operaie POP trebuie s se
compare SP cu baza stivei;
Mai lent dect stiva Hardware deoarece ele sunt definite
n spaiul de memorie operativ, iar operaiile cu memoria
sunt consumatoare de timp;
Accesul la stiv se face ca la orice memorie prin registrul
MAR;
Comunicaia stivei cu magistrala de date sau DATA BUS se
face prin registrul MBR.

ARHITECTURA CALCULATOARELOR Stiva

15

Stiva Software
O operaie PUSH declaneaz un ciclu de scriere (WRITE)
n memorie, iar o operaie POP un ciclu de citire (READ);
Exist dou tipuri de stive software:
stive cu umplere n sus;
stive cu umplere n jos.

Stiv software cu umplere n sus: dup operaia PUSH


are loc incrementarea adreselor;
Baza stivei se afl la adresa minim, iar plafonul la adresa
maxim;

Stiv software cu umplere n jos: operaia PUSH


presupune decrementarea adreselor;
Baza este la adresa maxim, iar plafonul la adresa minim.

ARHITECTURA CALCULATOARELOR Stiva

16

Stiva Software
Cele dou operaii:
1) PUSH:
1. Data este adus n MBR;
2. Se compar coninutul registrului REG3 (SP) care conine
vrful stivei cu coninutul registrului REG1 care conine
adresa plafonului;
3. Dac REG 3 (SP) = REG 1 => E=1 (stiva este plin);
4. Dac nu sunt egale, atunci se trece la pasul urmtor;
5. Se incrementeaz coninutul REG3;
6. Se transfer coninutul REG3 (SP) n MAR;
7. Se declaneaz un ciclu de WRITE: din MBR, data se nscrie
n locaia de memorie reprezentnd vrful stivei;
8. Stop operaie.
ARHITECTURA CALCULATOARELOR Stiva

17

Stiva Software
2) POP:
1. Se compar coninutul registrului REG3 (SP) care conine
vrful stivei cu coninutul registrului REG2 care conine
adresa bazei;
2. Dac sunt egale atunci E=1 (stiva este goal);
3. Dac nu sunt egale, atunci se trece la pasul urmtor;
4. Se transfer coninutul lui REG3 (SP) n MAR;

5. Se declaneaz un ciclu READ;


6. Se transfer data din locaia definit de vrful stivei n MBR,
de unde apoi este disponibil pe magistrala de date;
7. Se decrementeaz valoarea REG3, adic se decrementeaz
SP-ul pentru a pointa ctre noul vrf al stivei;
8. Stop operaie.
ARHITECTURA CALCULATOARELOR Stiva

18

Stiva Software
MEMORIE DATE

INDICATORI DE STARE
E

(k-1) ......... 1 0

MAR

ADRESA LIMITA
SUPERIOARA

VARF

REG1

ADRESA VARFUL
STIVEI

ADRESA LIMITA
INFERIOARA

REG2

REG3
(SP)

n
0 1 ........

(n -1)

MBR
n
MAGISTRALA DE DATE

ARHITECTURA CALCULATOARELOR Stiva

19

Stiva Software
Prezentarea operaiilor s-a facut pentru cazul stivelor
software cu umplere n sus;
n cazul stivelor cu umplere n jos se inverseaz operaiile
de incrementare cu cele de decrementare.

ARHITECTURA CALCULATOARELOR Stiva

20

Evaluarea expresiilor folosind stiva


Calculatoarele orientate pe stiv (stack
utilizeaz instruciuni fr adres, ce pot:

computers)

extrage doi operanzi din stiv;


efectua o operaie asupra lor;
depune rezultatului n stiv.

Unele probleme care se rezolv n mod eficient de


calculatoarele orientate pe stiv sunt:
transformarea expresilor aritmetice din forma infixat n
forma postfixat;
evaluarea expresiilor aritmetice.

ARHITECTURA CALCULATOARELOR Stiva

21

Instruciuni de lucru cu stiva la


microprocesorul I8080

ARHITECTURA CALCULATOARELOR Stiva

22

Instruciuni de lucru cu stiva


La microprocesorul I8080:
Instruciunea PUSH;
Instruciunea POP;
Instruciunea LXI.

ARHITECTURA CALCULATOARELOR Stiva

23

Registre la microprocesorul I8080


8 biti

8 biti

PSW

L
SP
PC

RI
8 biti
16 biti

A: 8 bii; deine unul din operanzi


sau rezultatul;
A este n comunicaie direct cu
ALU;
Registrele generale: 8 bii (B, C,
D, E, H i L) pot fi organizate n
perechi (BC, DE, HL);
Accesul la aceste registre se face
pe baza adresei de registru;
De obicei cel de-al doilea operand
se afl n unul dintre aceste
registre generali;
Registre pe 16 bii: SP i PC.

ARHITECTURA CALCULATOARELOR Stiva

24

Registre la microprocesorul I8080


8 biti

8 biti

PSW

L
SP
PC

PSW: registrul indicatorilor de


stare - un registru pe 8 bii din
care sunt folosii doar 5 bii pt.
memorarea indicatorilor de stare:
PSW:

AC

Z: indicator de stare de zero;


C: indicator de stare de transport
(carry);
S: indicator de stare de semn;

RI

P: indicator de stare de paritate;

8 biti
16 biti

AC: indicator de stare de


transport auxiliar.

ARHITECTURA CALCULATOARELOR Stiva

25

Registre la microprocesorul I8080


8 biti

8 biti

PSW

L
SP
PC

RI
8 biti
16 biti

Perechea de registre HL:


numrtor de date (DC-Data
Counter);
Se folosete mecanismul
adresrii indirecte;
Perechea HL poate conine un
grup de 16 bii care desemneaz
o adres de memorie;
La acea locaie se afl o dat i
nu o instruciune;
n acest fel se asigur transferuri
de date ntre memorie i
procesor.

ARHITECTURA CALCULATOARELOR Stiva

26

Registre la microprocesorul I8080


8 biti

8 biti

PSW

Fiecare pereche de registre se


identific printr-o adres de 2 bii;

SP
PC

Pereche de registre

Combinaie de bii

APSW

11

BC

00

DE

01

HL

10

RI
8 biti
16 biti

RI: registru de instruciuni de 8


bii n care se ncarc OPCODE-ul
instruciunii curente.

ARHITECTURA CALCULATOARELOR Stiva

27

Stiva la microprocesorul I8080


Tip software;
Cu umplere n jos;
Baza se afl la adresa cea mai mare;
SP: 16 bii;
Incrementarea sau decrementarea SP-ului se face n mod
automat sub controlul UC;
Stiva va fi definit acolo unde se afl memoria de date
(RAM) care permite efectuarea ambelor operaii: citire i
scriere;
Dimensiunea stivei: 256 de locaii.

ARHITECTURA CALCULATOARELOR Stiva

28

Instruciunea PUSH
Instruciune pe un octet, n interiorul cruia se specific o
pereche de registre;
n cod main aceast instruciune este: 11XX0101;
XX specific perechea de registre dup regula:
Pereche de registre

Combinaie de bii

APSW

11

BC

00

DE

01

HL

10

Instruciunea asigur: transferarea unui cuvnt de 16 bii


(2 octei) dintr-o pereche de registre specificat de
valoarea XX n stiv, n dou locaii consecutive;
SP se decrementeaz cu 2, deci dup
instruciunii valoarea SP-ului va fi (SP) - 2.
ARHITECTURA CALCULATOARELOR Stiva

executarea

29

Instruciunea PUSH

ARHITECTURA CALCULATOARELOR Stiva

30

Instruciunea PUSH
Paii de execuie sunt:
1. Se citete PC-ul i se adreseaz locaia de memorie de
program (ROM) de la adresa pppp;
2. Se citete memoria ROM la adresa pppp de unde se
extrage instruciunea curent (11000101) care se aduce
n registrul de instruciuni (RI);
3. Se decodific instruciunea (OPCODE-ul). Se stabilete c
este o instruciune PUSH i c data pe 16 bii din
perechea de registre BC se depune n stiv;

4. Se incrementeaz PC-ul
urmtoarei instruciuni;

pentru

indica

locaia

5. Se decrementeaz SP-ul;
ARHITECTURA CALCULATOARELOR Stiva

31

Instruciunea PUSH
6. Se citete coninutul SP-ului i se adreseaz memoria de
date (stiva);
7. Se citete coninutul registrului B (octetul
cel mai
semnificativ al datei de 16 bii) care se transfer n vrful
stivei;
8. Se decrementeaz SP-ul pentru a indica urmtoarea
locaie din stiv n care se va transfera urmtorul octet al
datei;
9. Se citete coninutul SP-ului i se adreseaz memoria de
date (stiva);
10.Se citete coninutul registrului C (octetul cel mai puin
semnificativ al datei de 16 bii) care se transfer n vrful
stivei.
ARHITECTURA CALCULATOARELOR Stiva

32

Instruciunea PUSH
Coninutul registrelor i al memoriei RAM dup executarea
instruciunii PUSH este urmtorul:

ARHITECTURA CALCULATOARELOR Stiva

33

Instruciunea POP
Instruciune pe un octet n interiorul cruia se specific o
pereche de registre;
n cod main aceast instruciune este: 11XX0001;
XX specific perechea de registre dup regula:
Pereche de registre

Combinaie de bii

APSW

11

BC

00

DE

01

HL

10

Instruciunea asigur: extragerea din stiv a unui cuvnt


de 16 bii (2 octei) pe care i depune n perechea de
registre specificat de XX;
Fiind o stiv cu umplere n jos SP va fi incrementat cu 2,
deci valoarea SP-ului va fi (SP)+2.
ARHITECTURA CALCULATOARELOR Stiva

34

Instruciunea POP

ARHITECTURA CALCULATOARELOR Stiva

35

Instruciunea POP
Paii de execuie sunt:
1. Se citete PC-ul i se adreseaz locaia de memorie de
program (ROM) de la adresa pppp;
2. Se citete memoria ROM la adresa pppp de unde se
extrage instruciunea curent (11000001) care se aduce
n registrul de instruciuni RI.
3. Se decodific instruciunea (OPCODE-ul). Se stabilete c
este o instruciune POP i ca data pe 16 bii extras din
stiv se depune n perechea de registre BC;

4. Se incrementeaz PC-ul
urmtoarei instruciuni;

pentru

indica

locaia

5. Se citete coninutul SP-ului i se adreseaz memoria de


date (stiva);
ARHITECTURA CALCULATOARELOR Stiva

36

Instruciunea POP
6. Se citete memoria RAM la adresa ssss de unde se
extrage un octet (octetul cel mai puin semnificativ al
datei de 16 bii) care se depune n registrul C;
7. Se incrementeaz SP-ul pentru a indica octetul urmtor
de citit din stiv;
8. Se citete coninutul SP-ului i se adreseaz memoria de
date (stiva);
9. Se citete memoria RAM la adresa ssss + 1 de unde se
extrage un octet (octetul cel mai semnificativ al datei de
16 bii) care se depune n registrul B;
10.Se incrementeaz SP-ul pentru a indica corect vrful
actual al stivei.

ARHITECTURA CALCULATOARELOR Stiva

37

Instruciunea POP
Coninutul registrelor dup executarea instruciunii POP
este urmtorul:

ARHITECTURA CALCULATOARELOR Stiva

38

Instruciunea LXI
Nu este propriu-zis o instruciune specific pentru stiv;
Ea este o variant a instruciunii LOAD;
Instruciunea LXI este pe 3 octei:
primul este OPCODE-ul;
urmtorii 2 octei specific valoarea efectiv (data imediat)
ce se ncarc n perechea de registre desemnat de cmpul
de OPCODE.

n cod main cmpul de OPCODE este: 00XX0001;


XX specific perechea de registre dup regula: 00-B,C;
01-D,E; 10-H,L; 11-SP;
Pentru a iniializa SP cu o valoare prestabilit se va
executa instruciunea "LXI SP data imediat".

ARHITECTURA CALCULATOARELOR Stiva

39

Instruciunea LXI

ARHITECTURA CALCULATOARELOR Stiva

40

Instruciunea LXI
Paii de execuie sunt:
1. Se citete PC-ul i se adreseaz locaia de memorie de
program (ROM) de la adresa pppp;
2. Se citete memoria ROM la adresa pppp de unde se
extrage instruciunea curent (00110001) care se aduce
n registrul de instruciuni RI;
3. Se decodific instruciunea (OPCODE-ul). Se stabilete c
este o instruciune pe 3 octei, LXI i data imediat pe 16
bii din instruciune se transfer n SP;

4. Se incrementeaz PC-ul; acesta inidic acum adresa


pppp+1;
5. Se citete PC-ul i se adreseaz locaia de memorie de
program (ROM) de la adresa pppp + 1;
ARHITECTURA CALCULATOARELOR Stiva

41

Instruciunea LXI
6. Se citete memoria ROM la adresa pppp + 1 de unde se
extrage octetul cel mai puin semnificativ al datei
imediate care se transfer n octetul cel mai puin
semnificativ al SP-ului;
7. Se incrementeaz PC-ul;
8. Se citete PC-ul i se adreseaz locaia de memorie de
program (ROM) de la adresa pppp + 2;
9. Se citete memoria ROM la adresa pppp + 2 de unde se
extrage octetul cel mai semnificativ al datei imediate care
se transfer n octetul cel mai semnificativ al SP-ului;
10.Se incrementeaz PC-ul.

ARHITECTURA CALCULATOARELOR Stiva

42

Instruciunea LXI
Coninutul registrelor dup executarea instruciunii LXI
este urmtorul:

ARHITECTURA CALCULATOARELOR Stiva

43

Utilizarea stivelor la apelul de proceduri

ARHITECTURA CALCULATOARELOR Stiva

44

Utilizarea stivei
Stivele se folosesc:
n calculatoarele tip stiv (stack computers);
asigur efectuarea operaiilor
polonez invers (postfix).

aritmetice

utiliznd

notaia

La tratarea ntreruperilor;
pentru deservirea unei cereri de ntrerupere se oprete execuia
programului principal i se sare la programul de servire al
ntreruperii;
naintea saltului trebuie salvat adresa de revenire n programul
principal.

La apelul de proceduri;
dac n timpul execuiei unui program se apeleaz o procedur
(subrutin), atunci se ntrerupe execuia programului principal
i se sare la nceputul procedurii apelate;
apelul se realizeaz printr-o procedur de tip CALL.
ARHITECTURA CALCULATOARELOR Stiva

45

Utilizarea stivei
Procedura: variabile locale;
Instruciunea CALL: lansarea procedurii n execuie +
specificarea valorii variabilelor locale;
Procedura se execut pn la ntlnirea instruciunii
RETURN; atunci se revine n programul principal;

La terminarea execuiei une proceduri se revine n


programul apelant => este necesar memorarea
contextului programului apelant;
Context: cel puin adresa de revenire, dar se recomand
i salvarea cuvntului de stare al programului, eventual i
alte registre;
Cadru (frame): ansamblul locaiilor din stiv aferente
unei instruciuni CALL.
ARHITECTURA CALCULATOARELOR Stiva

46

Exemplu

Fie:

un program principal: PP;


dou proceduri P1 i P2;
procedura P1, defint cu 2 variabile x i y;
procedura P2, definit cu 3 variabile m, n i p.

ARHITECTURA CALCULATOARELOR Stiva

47

Exemplu
PROGRAMUL PRINCIPAL

PROCEDURA P1 (x,y)

PROCEDURA P2 (m,n,p)

AP1

APP

PSW1
(8 )

PSW2

(4)

2)
(1 ,
1
PSW3
LP

AP11
(5)

( 7)

)
(2,.7,4
2
P
L
C AL

R ET
UR

(9)

APP1

CA

AP2

(3)

(1)

(2 )

)
1(5,9
AL L P

(6)

APP2

RE

TU
R

ARP1
(10)

RETU

ARP2

RN

ARP1'

ARHITECTURA CALCULATOARELOR Stiva

48

Exemplu
APP adresa de start a programului principal;
AP1 adresa de start a procedurii P1;
AP2 adresa de start a procedurii P2;
PSW1 cuvntul de stare al programului principal ce trebuie
salvat pe stiv atunci cnd se face salt la procedura P1;
APP1 adresa de retur dup apelul procedurii P1;
PSW3 cuvntul de stare al procedurii P1 ce trebuie salvat
pe stiv atunci cnd se face salt la procedura P2;
AP11 adresa de retur dup apelul procedurii P2 din P1;
ARP2 adresa unde se apeleaz RETURN n procedura P2;
ARP1 adresa unde se apeleaz prima dat RETURN n
procedura P1.
ARHITECTURA CALCULATOARELOR Stiva

49

Exemplu
PSW2 cuvntul de stare al programului principal ce trebuie
salvat pe stiv atunci cnd se face salt a doua dat la
procedura P1;
APP2 adresa de retur dup apelul procedurii P1 pentru a
doua dat;
ARP1 adresa unde se apeleaz a doua dat RETURN n
procedura P1.

ARHITECTURA CALCULATOARELOR Stiva

50

Exemplu
Procedura P1 are dou variabile notate x i y;
Cnd se apeleaz procedura P1 se plaseaz n stiv, n
cadrul frame-ului, i cele dou valori x i y;
Acestea se depun n partea superioar a stivei, deasupra
adresei de revenire i a cuvntului de stare, deoarece
primele operaii la execuia procedurii, presupune operaii
POP pentru preluarea din vrful stivei a valorilor efective
pentru variabilele locale;
n procedura P1 apare un apel ctre procedura P2 care
are 3 variabile m, n, p;
La terminarea execuiei procedurii P2 se execut
instruciunea RETURN i se revine la procedula apelant
P1 la adresa AP11.
ARHITECTURA CALCULATOARELOR Stiva

51

Exemplu
Procedura P1 are dou variabile notate x i y;
Cnd se apeleaz procedura P1 se plaseaz n stiv, n
cadrul frame-ului, i cele dou valori x i y;
Acestea se depun n partea superioar a stivei, deasupra
adresei de revenire i a cuvntului de stare, deoarece
primele operaii la execuia procedurii, presupune operaii
POP pentru preluarea din vrful stivei a valorilor efective
pentru variabilele locale;
n procedura P1 apare un apel ctre procedura P2 care
are 3 variabile m, n, p;
La terminarea execuiei procedurii P2 se execut
instruciunea RETURN i se revine la procedula apelant
P1 la adresa AP11.
ARHITECTURA CALCULATOARELOR Stiva

52

Exemplu
PROGRAMUL PRINCIPAL

PROCEDURA P1 (x,y)

PROCEDURA P2 (m,n,p)

AP1

APP

PSW1
(8 )

PSW2

(4)

2)
(1 ,
1
PSW3
LP

AP11
(5)

( 7)

)
(2,.7,4
2
P
L
C AL

R ET
UR

(9)

APP1

CA

AP2

(3)

(1)

(2 )

)
1(5,9
AL L P

(6)

APP2

RE

TU
R

ARP1
(10)

RETU

ARP2

RN

ARP1'

ARHITECTURA CALCULATOARELOR Stiva

53

Exemplu
Evoluia stivei: la fiecare CALL se depune un frame n
stiv, iar la fiecare RETURN se extrage un frame.

ARHITECTURA CALCULATOARELOR Stiva

54

Exemplu
Evoluia stivei: la fiecare CALL se depune un frame n
stiv, iar la fiecare RETURN se extrage un frame.

ARHITECTURA CALCULATOARELOR Stiva

55

Exemplu
Evoluia stivei: la fiecare CALL se depune un frame n
stiv, iar la fiecare RETURN se extrage un frame.

ARHITECTURA CALCULATOARELOR Stiva

56

Instruciuni pentru apelul de proceduri


la microprocesorul I8080

ARHITECTURA CALCULATOARELOR Stiva

57

Instruciunea CALL
Asigur transferul coninutului PC n stiv;
Apoi, ncarc PC-ului cu
instruciune (adresa de salt);

valoarea

specificat

Instruciunea CALL este pe 3 octei: primul este


OPCODE-ul, iar urmtorii 2 octei specific adresa de salt;

n cod main cmpul de OPCODE este: 11001101;


n stiv se memoreaz adresa de retur, deci la valoarea
curent a PC-ului se va aduga 3.

ARHITECTURA CALCULATOARELOR Stiva

58

Instruciunea CALL

ARHITECTURA CALCULATOARELOR Stiva

59

Instruciunea CALL
Paii de execuie sunt:
1. Se citete PC-ul i se adreseaz locaia de memorie de
program (ROM) de la adresa pppp;
2. Se citete memoria ROM la adresa pppp de unde se
extrage instruciunea curent (11001101) care se aduce
n registrul de instruciuni RI;
3. Se decodific instruciunea (OPCODE-ul); se stabilete c
este o instruciune pe 3 octei, CALL, i c data imediat
pe 16 bii din instruciune reprezint adresa de salt;
4. Se incrementeaz PC-ul;
5. Se citete PC-ul i se adreseaz locaia de memorie de
program (ROM) de la adresa pppp + 1.

ARHITECTURA CALCULATOARELOR Stiva

60

Instruciunea CALL
6. Se citete memoria ROM la adresa pppp + 1 de unde se
extrage octetul inferior al adresei de salt care se transfer
n procesor n octetul inferior al unui registru tampon de
16 bii;
7. Se incrementeaz PC-ul;
8. Se citete PC-ul i se adreseaz locaia de memorie de
program (ROM) de la adresa pppp + 2;
9. Se citete memoria ROM la adresa pppp + 2 de unde se
extrage octetul superior al adresei de salt care se
transfer n procesor n octetul superior al registrului
tampon de 16 bii;
10.Se incrementeaz PC-ul;
11.Se decrementeaz SP;
ARHITECTURA CALCULATOARELOR Stiva

61

Instruciunea CALL
12.Se adreseaz memoria de data (stiva) la adresa indicat
de SP (ssss - 1);
13.Se transfer n stiv la adresa ssss - 1 octetul superior al
PC-ului n vederea memorrii adresei de retur;
14.Se decrementeaz SP;

15.Se adreseaz memoria de data (stiva) la adresa indicat


de SP (ssss - 2);
16.Se transfer n stiv la adresa ssss - 2 octetul inferior al
PC-ului n vederea memorrii adresei de retur;

17.Adresa de salt (vvtt) memorat n registrul tampon se


transfer n PC; deci, la urmtorul pas se va face FETCH
de la adresa vvtt.

ARHITECTURA CALCULATOARELOR Stiva

62

Instruciunea CALL
Coninutul registrelor i al memoriei RAM dup executarea
instruciunii CALL este urmtorul:

ARHITECTURA CALCULATOARELOR Stiva

63

Instruciunea RETURN
Asigur revenirea din rutin;
Este o instruciune pe un singur octet;
n limbaj cod main instruciunea RET are urmtorul
OPCODE: 11001001;
Este o combinaie ntre o instruciune POP i una JUMP;
Se citesc 2 octei din vrful stivei care se nscriu n PC;
Adresarea stivei se face cu SP-ul;
Se pierde vechiul coninut al PC-ului care nu mai este
necesar;
Coninutul SP-ului crete cu 2.

ARHITECTURA CALCULATOARELOR Stiva

64

Instruciunea RETURN

ARHITECTURA CALCULATOARELOR Stiva

65

Instruciunea RETURN
Paii de execuie sunt:
1. Se citete PC-ul i se adreseaz locaia de memorie de
program (ROM) de la adresa pppp;
2. Se citete memoria ROM la adresa pppp de unde se
extrage instruciunea curent (11001001) care se aduce
n registrul de instruciuni RI;
3. Se decodific instruciunea (OPCODE-ul). Se stabilete c
este o instruciune RET i c data pe 16 bii extras din
stiv se depune n PC;
4. Se incrementeaz PC-ul
urmtoarei instruciuni;

pentru

indica

locaia

5. Se citete coninutul SP-ului i se adreseaz memoria de


date (stiva).
ARHITECTURA CALCULATOARELOR Stiva

66

Instruciunea RETURN
6. Se citete memoria RAM la adresa ssss de unde se
extrage un octet (octetul cel mai puin semnificativ al
datei de 16 bii) care se depune n octetul inferior al
registrului PC;
7. Se incrementeaz SP-ul pentru a indica octetul urmtor
de citit din stiv;
8. Se citete coninutul SP-ului si se adreseaz memoria de
date (stiva);
9. Se citete memoria RAM la adresa ssss + 1 de unde se
extrage un octet (octetul cel mai semnificativ al datei de
16 bii) care se depune n octetul superior al registrului
PC;
10.Se incrementeaz SP-ul pentru a indica corect vrful
actual al stivei.
ARHITECTURA CALCULATOARELOR Stiva

67

Instruciunea RETURN
Coninutul registrelor dup
RETURN este urmtorul:

ARHITECTURA CALCULATOARELOR Stiva

executarea

instruciunii

68

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