Documente Academic
Documente Profesional
Documente Cultură
Arhitectura
Calculatoarelor
Stiva
Ctlina Manca
catalina.mancas@yahoo.it
Dan Manca
dan.mancas@netdania.net
Astzi...
Ultimul curs
Astzi...
Ultimul curs
Stiva:
Noiuni i definiii;
Categorii;
Instruciuni de lucru cu stiva la microprocesorul I8080;
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).
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;
PLAFON
VRF
PARTEA
OCUPAT
BAZ
Stiva: Categorii
Stiv hardware: definit pe grupuri de registre;
Stiv software: definit n memoria calculatorului.
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;
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:
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.
11
Stiva Hardware
2) POP: extragerea datei din vrful stivei, transferul ei n
SBR dup care are loc decrementarea SP-ului.
5. Stop operaie.
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
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;
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.
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.
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;
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
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.
20
computers)
21
22
23
8 biti
PSW
L
SP
PC
RI
8 biti
16 biti
24
8 biti
PSW
L
SP
PC
AC
RI
8 biti
16 biti
25
8 biti
PSW
L
SP
PC
RI
8 biti
16 biti
26
8 biti
PSW
SP
PC
Pereche de registre
Combinaie de bii
APSW
11
BC
00
DE
01
HL
10
RI
8 biti
16 biti
27
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
executarea
29
Instruciunea PUSH
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:
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
34
Instruciunea POP
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
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.
37
Instruciunea POP
Coninutul registrelor dup executarea instruciunii POP
este urmtorul:
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.
39
Instruciunea LXI
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;
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.
42
Instruciunea LXI
Coninutul registrelor dup executarea instruciunii LXI
este urmtorul:
43
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;
46
Exemplu
Fie:
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'
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.
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'
53
Exemplu
Evoluia stivei: la fiecare CALL se depune un frame n
stiv, iar la fiecare RETURN se extrage un frame.
54
Exemplu
Evoluia stivei: la fiecare CALL se depune un frame n
stiv, iar la fiecare RETURN se extrage un frame.
55
Exemplu
Evoluia stivei: la fiecare CALL se depune un frame n
stiv, iar la fiecare RETURN se extrage un frame.
56
57
Instruciunea CALL
Asigur transferul coninutului PC n stiv;
Apoi, ncarc PC-ului cu
instruciune (adresa de salt);
valoarea
specificat
58
Instruciunea CALL
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.
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;
62
Instruciunea CALL
Coninutul registrelor i al memoriei RAM dup executarea
instruciunii CALL este urmtorul:
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.
64
Instruciunea RETURN
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
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:
executarea
instruciunii
68