Documente Academic
Documente Profesional
Documente Cultură
Definiţie: – Stiva este o structură de date care ocupă mai multe locaţii de memorie
aflate la adrese consecutive şi care este întotdeauna accesată printr-un singur capăt, denumit
VÂRFUL STIVEI .
– Registrul special indicator de stivă SP = Stack Pointer conţine întotdeauna adresa
ultimei locaţii ocupate, care constituie vârful stivei:
– Se face în perechi de câte 2 octeţi care sunt încărcaţi la adresele imediat inferioare
vârfului stivei, prin decrementarea registrului SP.
– Se poate introduce în stivă conţinutul registrelor pereche ale microprocesorului,
folosind instrucţiuni: PUSH <reg. pereche> ;
133
DR. ING. FIZ. IOAN ALEODOR-DANIEL – BAZELE FUNCȚIONĂRII ȘI PROGRAMĂRII CALCULATOARELOR
= 1= ;
= ⇒ locația se încarcă cu valoarea ;
= 1= ;
= ⇒ locația se încarcă cu valoarea ;
Observaţii:
– Introducerea registrelor pereche în stivă are loc în 2 paşi consecutivi:
1. Se decrementează SP şi se încarcă M (SP) cu registrul mai semnificativ HIGH;
2. Se mai decrementează SP încă o dată şi se încarcă registrul LOW la M (SP).
– Decrementarea şi înscrierea la adresa SP sunt operaţii hardware executate automat
(fără intervenţia programului) |⇒ stivă hardware !
– Locaţiile inferioare vârfului stivei sunt suprascrise cu valorile nou introduse pe stivă.
134
DR. ING. FIZ. IOAN ALEODOR-DANIEL – BAZELE FUNCȚIONĂRII ȘI PROGRAMĂRII CALCULATOARELOR
– Se face în perechi de câte 2 octeţi care sunt preluaţi de la adresele din vârful stivei,
prin incrementarea consecutivă a registrului SP.
– Se poate extrage din stivă conţinutul registrelor pereche ale microprocesorului,
folosind instrucţiuni: POP <reg. pereche>;
POP H(L)
POP D(E) registrul mai puţin semnificativ
POP B(C) din pereche nu se mai specifică;
POP PSW (AF) perechea acumulator + ”flag”-uri.
– Întotdeauna prima valoare extrasă din stivă va fi ultima valoare introdusă anterior,
organizare de tip:
datorită accesului printr-un singur capăt: .
= LAST-IN, FIRST-OUT
135
DR. ING. FIZ. IOAN ALEODOR-DANIEL – BAZELE FUNCȚIONĂRII ȘI PROGRAMĂRII CALCULATOARELOR
Observaţii:
– Valorile locaţiilor citite de pe stivă rămân nemodificate, dar nu mai sunt accesibile
datorită mutării indicatorului; ele vor fi suprascrise la următoarea introducere pe stivă.
– Datorită accesului de tip LIFO, registrele introduse în stivă se vor extrage
obligatoriu în ordine inversă .
– Folosind stiva se poate interschimba conţinutul a două registre pereche dacă sunt
extrase în ordinea introducerii lor: PUSH B
PUSH D
POP B |⇒ BC = vechiul DE
POP D |⇒ DE = vechiul BC
– Stiva ocupă locaţii cu adrese în ordine descrescătoare iar programul ocupă locaţii cu
adrese crescătoare pentru a lăsa între aceste 2 zone o singură parte de memorie neutilizată,
ori ca stivă ;
care să se poată folosi
ori ca program ∶
136
DR. ING. FIZ. IOAN ALEODOR-DANIEL – BAZELE FUNCȚIONĂRII ȘI PROGRAMĂRII CALCULATOARELOR
– Dacă subrutina / funcţia / procedura este apelată o singură dată, este preferabilă
scrierea ei între instrucţiunile programului principal, pentru că apelul şi revenirea consumă
timp şi spaţiu de memorie !
137
DR. ING. FIZ. IOAN ALEODOR-DANIEL – BAZELE FUNCȚIONĂRII ȘI PROGRAMĂRII CALCULATOARELOR
138
DR. ING. FIZ. IOAN ALEODOR-DANIEL – BAZELE FUNCȚIONĂRII ȘI PROGRAMĂRII CALCULATOARELOR
– Întreruperea poate apărea între oricare 2 instrucţiuni ale unui program, când este
generată o instrucţiune de apel de subrutină prin hardware, fără a fi prezentă în program !
Observaţie:
– Nu există aşa-zise “întreruperi soft” ; acestea sunt doar simple apeluri de subrutine
scrise în program.
139
DR. ING. FIZ. IOAN ALEODOR-DANIEL – BAZELE FUNCȚIONĂRII ȘI PROGRAMĂRII CALCULATOARELOR
140