Hcs12 in sklad, subrutine in prekinitve - PowerPoint PPT Presentation

About This Presentation
Title:

Hcs12 in sklad, subrutine in prekinitve

Description:

Sklad - splo no Sklad - splo no HCS12 in sklad HCS12 in sklad HCS12 in sklad HCS12 in sklad HCS12 sklad - tipi en primer HCS12 vloga sklada Programi ... – PowerPoint PPT presentation

Number of Views:51
Avg rating:3.0/5.0
Slides: 21
Provided by: Stani71
Category:

less

Transcript and Presenter's Notes

Title: Hcs12 in sklad, subrutine in prekinitve


1
(No Transcript)
2
Sklad - splošno
  • Kaj je sklad?
  • Sklad (angl. Stack) je dinamicna podatkovna
    struktura, nad katero sta (poleg inicializacije)
    mogoci dve operaciji
  • Vstavi (angl. Push) in
  • Vzemi (angl. Pull).
  • Z operacijo VSTAVI damo nov podatek v (na) sklad.
  • Z operacijo VZEMI vzamemo podatek s (iz) sklada.
  • Sklad ima dva konca dno in vrh.
  • Obe operaciji (VSTAVI, VZEMI) delujeta na tistem
    koncu, ki mu recemo vrh.
  • Ko sklad inicializiramo, je prazen.
  • Z operacijo VSTAVI se sklad polni.
  • Z operacijo VZEMI se sklad prazni.

3
Sklad - splošno
Vrh sklada
Podatek na vrhu sklada
Tu delujeta operaciji vstavi in vzemi
Ostala vsebina sklada
Dno sklada
  • Sklad torej služi za shranjevanje podatkov po
    principu zadnji
  • noter, prvi ven (angl. LIFO Last In First
    Out).
  • Za hranjenje podatkov potrebujemo ustrezno
    pomnilno sredstvo
  • (pomnilnik) in kazalec (register) ki doloca,
    kje je vrh.

4
HCS12 in sklad
  • Za sklad je uporabljen (katerikoli) del
    pomnilnika RAM (se nahaja
  • kjerkoli v naslovnem podrocju pomnilnika RAM).
  • Vrh sklada doloca skladovni kazalec register
    procesorja - SP.
  • Inicializacija sklada
  • Izberemo položaj (zacetni vrh oz. dno) sklada
  • LDS SKLAD npr. SKLAD 4000
  • S tem je sklad prazen.

Skladovni kazalec
SP
4000
5
HCS12 in sklad
  • Oparacija VSTAVI PSHA, PSHB, PSHC, PSHD, PSHX,
    PSHY
  • Skladovni kazalec se najprej dekrementira.
  • Operand se shrani v sklad na naslov, ki ga kaže
    SP.
  • Sklad torej rase oz. se polni proti nižjim
    naslovom.
  • Npr. PSHA -SP, (SP) ? A

6
HCS12 in sklad
  • Oparacija VZEMI PULA, PULB, PULC, PULD, PULX,
    PULY
  • Operand se vzame s sklada, t.j. z naslova, kamor
    kaže SP.
  • Skladovni kazalec se nato inkrementira.
  • Seveda se vsebina na tistem naslovu ne spremeni.
  • Npr. PULA A ? (SP), SP

7
HCS12 in sklad
  • Primer zamenjamo vsebini akumulatrojev A in B
  • PSHA naj bo v akumulatorju A npr. 55
  • PSHB naj bo v B npr. AA
  • PULA sedaj je v akumulatorju A AA
  • PULB in v B gre 55

Pomnilnik za sklad
8
HCS12 sklad - tipicen primer
  • (Zacasno) shranjevanje v sklad
  • PSHA shranjevanje v izbranem vrstnem redu
  • PSHB
  • PSHX
  • ...... I.T.D.
  • ......
  • PULX obnovitev v obratnem vrstnem redu
  • PULB
  • PULA

9
HCS12 vloga sklada
  • Pri zacasnem shranjevanju podatkov (v sklad)
  • to smo ravnokar spoznali.
  • Pri povezovanju programov s podprogrami
  • (subrutinami) shranjevanju vrnitvenega naslova
    v
  • sklad, to je naslova ukaza v klicnem programu,
    ki sledi
  • klicnemu ukazu.
  • Pri streženju zahtevam za prekinitev
    shranjevanje
  • registrov procesorja (konteksta) v sklad.

10
Programi in podprogrami
  • Program obicajno obsega
  • glavni program in
  • vec podprogramov (subrutin).
  • Noben (pod)program naj ne bi obsegal vec vrstic
    kot za eno (dobro) stran.
  • Že malo obsežnejši program narejen v enem kosu
    postane nepregleden, težko obvladljiv in za
    enkratno uporabo.
  • Nacrtovanje programa s podprogrami naredi program
    bolj pregleden, bolj obvladljiv, modularen, zato
    tudi bolj prilagodljiv in bolj uporaben.
  • Podprogrami pa so sami po sebi potrebni tudi (in
    vcasih predvsem) zato, ker se dolocena zaporedja
    ukazov (dolocene sestavljene operacije) v
    programu (programih) veckrat oz. pogosto
    ponavljajo.

11
Programi in podprogrami
  • Glavni program je tisti del programa, ki se zacne
  • izvrševati, ko hocemo program izvršiti.
  • Podprogrami (subrutine) pa se klicejo iz
    glavnega
  • programa (klicnega programa) po potrebi, samo
    enkrat
  • ali pa poljubno mnogokrat.
  • Možen je seveda tudi klic podprograma znotraj
  • podprograma, to je gnezdenje klicev.
  • Ko govorimo o skladu in podprogramih, pa je prav
    sklad
  • tisti, ki
  • daje podlago, da se klicni program lahko
    nadaljuje
  • po vrnitvi iz klicanega podprograma,
  • omogoca gnezdenje klicev.

12
Programi in podprogrami
Podprogram SUB_A SUB_A Ukaz 1 Ukaz
2 ...... ...... Ukaz za povratek (RTS)
Glavni program ....... Ukaz N-1 Ukaz N Klic
podprograma (JSR SUB_A) Ukaz N1 ....... ....... .
...... Klic podprograma (JSR SUB_B) ....... .....
.. ....... ....... Ponovni klic podprograma (JSR
SUB_B) ....... I.T.D.
Podprogram SUB_B SUB_B Ukaz 1 Ukaz
2 ...... ...... Ukaz za povratek (RTS)
13
HCS12 - subrutine
  • Podprogramu (subrutini) damo primerno ime, ki sam
    po sebi o subrutini nekaj pove, npr. Sestej
  • V zbirnem jeziku je to naslov 1. ukaza subrutine
  • Poskrbimo za prenos argumentov iz klicnega v
    klicni program (subrutino) in obratno, to je
    (vhodnih) podatkov in (izhodnih) rezultatov.
  • Ce se le da (ko jih je malo) prenašamo argumete
    preko
  • registrov CPE.
  • Zapišemo vsebino subrutine, to je
  • zaporedje ukazov, ki spada k subrutini in
    realizira tisto, cemur je namenjena, to je na
    podlagi vhodnih podatkov da potrebni rezultat.
  • Poskrbimo za povratek v klicni program, to je
  • Za to imamo ukaz RTS
  • Opomba seveda je ukazov RTS za povratek iz iste
    subrutine po potrebi lahko tudi vec.

14
HCS12 primer subrutine
------------------------------------------------
----------------------------------------
Program s podprogramom --- Splošne
definicije RAMSTART EQU 1000 zacetek
pomnilnika RAM RAMSIZE EQU 2000 njegova
velikost RAMEND EQU RAMSTARTRAMSIZE PROGRAM EQU
3000 zacetek pomnilnika za program NPOD EQU 1
0 št. podatkov za sešteti --- podatki in
sklad ORG RAMSTART POD DS.B NPOD to naj
bodo podatki za seštevanje VSOTA DS.B 1 tu bo
rezultat --- zacetek glavnega
programa ORG PROGRAM Start LDS RAMEND doloci
mo sklad
15
HCS12 primer subrutine
--- priprava na klic subrutine --- podamo
dejanske (vrednosti) argumentov LDX POD zac
etek podatkov LDAB NPOD število
podatkov JSR SESTEJ klic subrutine BRA n
eskoncna zanka
16
HCS12 primer subrutine
------------------------------------------------
----------------------------------- Ime
Subrutine SESTEJ Opis subrutina sešteje
podano število 8-bitnih podatkov v pomnilniku
Vhodni argumenti register X naslov prvega
podatka akumulator B število podatkov
Izhod vsota podatkov shranjena na naslovu takoj
za podatki SESTEJ PSHA shranimo
registre PSHB PSHX CLRA SESTEJ0 ADDA
0,X racunamo INX DECB BNE SESTEJ0 STAA 0
,X shranimo rezultat (lahko tudi STAA
VSOTA) PULX obnovimo registre PULB PULA
RTS
17
HCS12 ukaz JSR
  • Ukaz
  • JSR ImeSubrutine
  • prenese izvrševanje zaporedja ukazov na
    subrutino.
  • V tem primeru pomeni
  • ImeSubrutine
  • simbolicni naslov 1.ukaza subrutine.
  • Kaj se dogaja?
  • Vsebina programskega števca se shrani v sklad.
  • Programski števec se polni z vsebino v polju
    operanda ukaza JSR (to je z naslovom 1. ukaza
    subrutine).
  • S tem se izvrševanje ukazov prenese na subrutino.

18
HCS12 ukaz JSR
Klicni program ....... 3000 NOP 3001 JSR 310
A 3004 NOP ....... Subrutina
310A TAB 310B ....... I.T.D.
3FFE
30
3FFF
04
Nedef.
4000
4000
Sklad
Sklad
19
HCS12 ukaz RTS
Klicni program ....... 3000 NOP 3001 JSR 310
A 3004 NOP ......... ....... Subrutina
310A TAB 310B ....... .......... ....... 3110
RTS
SP
3FFE
30
3FFE
30
3FFF
04
3FFF
04
SP
4000
4000
Sklad
Sklad
20
HCS12 sklad in prekinitve
  • V primeru zahteve za prekinitev procesor shrani
    svoj
  • kontekst (registre) v sklad.
  • Programski števec se polni z vsebino pomnilniške
  • besede s posebnim pomenom prekinitvenim
  • vektorjem (vektor vsebuje torej naslov ukaza).
  • Sledi prevzem in izvršitev (prvega) ukaza ter za
    tem
  • vseh ostalih ukazov prekinitvenega strežnika.
  • Zadnji ukaz prekinitvenega strežnika je ukaz RTI
  • (angl.Return from Interrupt), ki iz sklada
    obnovi ob
  • zahtevi za prekinitev shranjene registre (seveda
    tudi
  • programski števec).
Write a Comment
User Comments (0)
About PowerShow.com