Sn - PowerPoint PPT Presentation

About This Presentation
Title:

Sn

Description:

Z sobn k (LiFo) Vyj man polo ka Vkl dan polo ka Vrchol z sobn ku Dno z sobn ku Fronta (FiFo) Vyj man polo ka Vkl dan polo ka Konec fronty – PowerPoint PPT presentation

Number of Views:52
Avg rating:3.0/5.0
Slides: 13
Provided by: Petr2164
Category:
Tags:

less

Transcript and Presenter's Notes

Title: Sn


1
Zásobník (LiFo)
Vyjímaná položka
Vkládaná položka
Vrchol zásobníku
Dno zásobníku
Fronta (FiFo)
Vyjímaná položka
Vkládaná položka
Konec fronty
Celo fronty
2
Implementace zásobníku
16-ti bitový registr SP (Stack Pointer) obsahuje
aktuální adresu vrcholu zásobníku
Zásobník je umísten v pameti
Dno
Pro práci se zásobníkem jsou speciální
instrukce, které upravují hodnotu SP
Nebývá úcelné s oblastí zásobníku pracovat i
jiným zpusobem
Vrchol
SPH
SPL
Inicializací obsahu SP se zásobník umístí do
pameti
SP
Další manipulace s SP nebývá úcelná a muže být
nebezpecná
Dno zásobníku má v pameti pevnou pozici
Vrchol NE !
3
Instrukce procesoru pro práci se zásobníkem
push X
Instrukce zvýší obsah registru SP o jedna a
uloží obsah operandu X do pameti, na adresu,
která je hodnotou registru SP.
push A
push Rn
push PSW
pop X
Instrukce zkopíruje byte z pameti na adrese,
která je obsahem registru SP do operandu X, a
sníží obsah registru SP o jedna.
pop A
pop Rn
pop PSW
4
Podprogramy
Podobne jako pri skoku voláním podprogramu se
predává rízení instrukci na jiném míste v
programu
Na rozdíl od skoku predpokládá se návrat do
místa, odkud se rízení predávalo
call Adresa16
call
Instrukce uloží do zásobníku (jako push) nejprve
nižší, pak vyšší byte adresy té instrukce, která
následuje na za instrukcí call. Potom se provede
skok na Adresa16.
call
ret
Instrukce odebere ze zásobníku (jako pop) nejprve
vyšší, pak nižší byte adresy instrukce, které
predá rízení.
ret
5
Podprogramy
Každým zavoláním podprogramu se velikost
zásobníku zvetší o dva Byty (uloží se návratová
adresa)
Každým návratem z podprogramu se velikost
zásobníku zmenší o dva Byty (odebere se
návratová adresa)
call
call
ret
call
call
ret
ret
Hlavní program
Podprogram úroven 1
Podprogram úroven 2
Podprogram úroven 3
6
Podprogramy
Pocet provedených instrukcí pop, by mel být
stejný jako pocet provedených instrukcí push
Pocet provedených instrukcí call, by mel být
stejný jako pocet provedených instrukci ret
Uvnitr podprogramu nepoužívat instrukce skoku s
cílem, mimo uvažovaný podprogram
Vne podprogramu nepoužívat instrukce skoku s
cílem uvnitr uvažovaného podprogramu
7
Príklady na podprogramy
Pr. Pískání LOOP mov A, 1 out 12, A
mov R0, 0 djnz R0, mov A, 0 out 12,
A mov R0, 0 djnz R0, jmp LOOP
Pr. Pískání LOOP mov A, 1 out 12, A
call WAIT mov A, 0 out 12, A call
WAIT jmp LOOP WAIT mov R0, 0 djnz R0, ret

8
Príklady na podprogramy
Pr. Blikání LOOP mov A, 0 out 12, A mov
R1, 0 W1 mov R0, 0 djnz R0, djnz R1, W1
mov A, 1 out 12, A mov R1, 0 W2 mov
R0, 0 djnz R0, djnz R1, W2 jmp LOOP
Pr. Blikání LOOP mov A, 0 out 12, A call
W mov A, 1 out 12, A call W jmp
LOOP W mov R1, 0 W1 mov R0, 0 djnz R0,
djnz R1, W1 ret
9
Príklad podprogramu
Pr. Podprogram-Displej DISPL cjne R7, 0,
D1 mov A, 00111111B jmp DISEND D1 cjne R7,
1, D2 mov A, 00000110B jmp DISEND D2 cjne
R7, 2, D3 mov A, 01011011B jmp
DISEND D3 cjne R7, 3, D4 mov A,
01001111B jmp DISEND D4 cjne R7, 4, D5 mov
A, 01100100B jmp DISEND D5 cjne R7, 5,
D6 mov A, 01101101B jmp DISEND D6 cjne R7,
6, D7 mov A, 01111101B jmp DISEND D7 cjne
R7, 7, D8 mov A, 00000111B jmp
DISEND D8 cjne R7, 8, D9 mov A,
01111111B jmp DISEND D9 cjne R7, 9, ERR mov
A, 01101111B DISEND out 12H, A ERR ret
Mikro- pocítac
a
f
b
g
e
c
h
d
P12.0
P12.1
P12.2
P12.3
P12.4
P12.4
P12.6
P12.7
10
Instrukcní sada
mov X, Y
Instrukce presunu dat
in A, Adresa8
out Adresa8, A
Instrukce vstupu a výstupu
cpl A
anl A, X
orl A, X
xrl A, X
Logické instrukce
rr A
rrc A
rl A
rlc A
Instrukce rotací
dec X
inc X
Aritmetické instrukce
add A, X
addc A, X
subb A, X
jmp Adresa16
djnz Rn,Adresa16
Instrukce skoku
cjne A,data8,Adresa16
cjne Rn,data8,Adresa16
jnz Adresa16
jz Adresa16
jc Adresa16
jnc Adresa16
push X
pop X
Práce se zásobníkem
call Adresa16
ret
Podprogramy
nop
Prázdná instrukce
11
Prerušení
Podnet pro prerušení prichází vetšinou z
prostrední mimo procesor
Podprogram pro obsluhu prerušení není spoušten
instrukcí call. Je aktivo- ván HW prostredky
(radic prerušení, procesor, )
Mikro- pocítac
Preruší se práve vykonávaný program
a zacne se provádet pripravený podprogram
Pri obsluze prerušení je ukládána do zásobníku
návratová adresa, podprogram pro prerušení
koncí instrukcí ret.
Po skoncení podprogramu procesor pokracuje ve
vykonávání prerušeného programu
12
Príklad na prerušení
Mikro- pocítac
Generátor Impulsu (0.01s)
Prerušení
Dokud je obsah promenné na adrese 0AAh vetší než
0, je periodicky v taktu 0.01s snižován o
jednicku.
Hlavní program a ostatní podprogramy mohou (ale
nemusí) tuto funkci použít pro rešení
úloh Casování.
Pr. Prerušení 0.01s IntT1 push A mov A,
0AAh jz IT1 dec A mov 0AAh, A IT1_1 pop
A ret
Ve složitejších aplikacích je možno podobných
CASOVACU zrídit mnoho (každý na jiné adrese).
Write a Comment
User Comments (0)
About PowerShow.com