8. Prekinitvena točka (breakpoint) F5
Ko
napišemo program v zbirniku, zaženemo prevajalnik.
Naloga
prevajalnika je, da razporedi spremenljivke, konstante in kodo v pomnilniški
naslovni prostor procesorja, jim določi ustrezne naslove v tem prostoru, ukaze
zapisane v obliki mnemonikov z določili operandov pa prevede v strojno kodo.
Ker
simulator MC6803 ne vključuje povezovalnika (linker), je tako generirana koda
že kar izvršljiva koda.
Prevajalnik
opravi dva prehoda skozi program: v prvem prehodu dodeli imenom spremenljivk in
drugim imenom v programu pomnilniške naslove, v drugem prehodu pa določi
medsebojne povezave med tako določenimi naslovi in ostalim delom programa.
Prevajalnik
tudi odkrije in opozori na sintaktične in semantične napake. Nalaganje
in izvajanje programa ni možno prej, preden so odpravljene vse napake v
izvornem programu.
Pri
prevajanju se v generira tudi datoteka z imenom "test.lst".
Ta datoteka združuje izvorno in strojno kodo programa, ki je bil nazadnje
preveden.
V
spodnjih dveh vrsticah se nahaja izrez primera dveh zaporednih ukazov iz
"test.lst" datoteke.
38
F003 86FF
ldaa #%11111111 ; vse nožice "porta
1" initializiramo kot izhode
39
F005 B70000 staa ddr
Število
38 v prvi koloni pomeni zaporedno številko vrstice v programu, F003 predstavlja
pomnilniški naslov v heksadecimalni obliki, od katerega dalje se nahajata dva
zloga strojne kode 86 in FF. Ta dva zloga sta se generirala pri prevajanju ukaza
ldaa
#%11111111. Podpičju sledi komentar, ki pojasnjuje ukaz.
Prednost
te datoteke je v tem, da v njej najdemo zelo nazorno povezavo med izvorno in
strojno kodo ter položaj spremenljivk in strojne kode v pomnilniku.
Opcija
"Naloži" vključuje prevajanje izvornega programa v strojno kodo in
prenos (nalaganje, load) strojne kode v simulirani pomnilnik mikrokontrolerja.
Po
nalaganju lahko primerjamo strojno kodo, ki jo najdemo v "test.lst"
datoteki, s kodo v pomnilniškem naslovnem prostoru (simuliranem pomnilniku), ki
je dostopen v oknu "Naslovni prostor".
To
je opcija, ki omogoča izvajanje in spremljanje programa po korakih.
Lahko jo imenujemo tudi "koračno izvajanje" programa. Ob
vsakem koraku (ali pritisku tipke F7) se izvede en sam ukaz zbirnika, nakar se
izvajanje prekine. Nastopi pavza.
Delo
s programom in spremljanje izvajanja programa je v tem načinu zelo počasno,
vendar je to odlično pomagalo pri razhroščevanju programa, ko moramo podrobno
preučiti, če se naša predvidevanja pri izvajanju posameznih ukazov ujemajo z
dejanskim stanjem.
Kazalec
in obarvana črta označujeta ukaz, ki se bo naslednji izvršil.
V
vsakem trenutku se lahko odločimo za pospešeno izvajanje v primerjavi s
"koračnim", če izberemo možnost "Počasi izvajaj" ali
"Hitro izvajaj".
Pri
tem načinu poteka izvajanje programa tako počasi, da lahko spotoma spremljamo
spremembe na določenih mestih (na izbranem naslovu v pomnilniku, v določenem
registru, itd).
Izvajanje
programa lahko v vsakem trenutku dokončno prekinemo z izbiro opcije
"Stop". Nadaljevanje
izvajanja ukaza v takem primeru ni več mogoče.
Z
izbiro "Pavza" pa se izvajanje programa prekine le začasno, za čas
pavze, nakar lahko izvajanje programa nadaljujemo z
izbiro "Naslednji korak", "Počasi izvajaj" ali
"Hitro izvajaj".
Kazalec
in obarvana črta neprestano sledita izvedenim ukazom in označujeta ukaz, ki se
bo naslednji izvršil.
V
menuju "Orodja", "Nastavitve okolja", "Simulacija"
določimo, v kolikšnem času se bo izvedel en ukaz, oziroma
v kolikšnih časovnih presledkih si bodo sledili posamezni ukazi drug za
drugim.
Je
le nekaj hitrejši način izvajanja ukazov v primerjavi z izbiro "Počasi
izvajaj".
Za
hitro izvajanje programa se odločimo, če želimo na hitro preveriti, kako
program deluje, če imamo večje število zaporednih iteracij ali, če lahko
spremljamo zaporedno spreminjanje vsebin na določenem naslovu v pomnilniku ali
katerem od registrov.
Glede
na to, da se po vsakem izvedenem ukazu spremeni zaslonska slika, ki prikazuje
program med izvajanjem, vsebine posameznih registrov in vsebine
v pomnilniku, ni ne možno niti smiselno poljubno povečevati hitrosti
izvajanja ukazov v menuju "Orodja", "Nastavitve okolja",
"Simulacija". Hitrost izvajanja programa pri simulaciji se prav zaradi
spremljanja izvajanja na ekranu ne more primerjati s hitrostjo izvajanja v
realnih razmerah v mikrokontrolerju.
Uporabnik
lahko kaj hitro sam "odkrije" maksimalno hitrost izvajanja programa,
ki je seveda odvisna od hitrosti računalnika, na katerem teče program za
simulacijo mikrokontrolerja MC6803.
To
možnost izberemo, če želimo izvajanje programa začasno prekiniti.
Za začasno prekinitev izvajanja se odločimo, če nameravamo podrobneje
pregledati vsebine v pomnilniku, registrih, spremeniti katero od vsebin, itd.
Po
koncu pavze lahko nadaljujemo z izvajanjem "koračno", "počasi"
ali "hitro".
Ta
izbira pomeni dokončno prekinitev izvajanja programa. Nadaljevanje izvajanja ni
več možno.
Če
želimo izvorno kodo programa spreminjati (editiranje programa), je potrebno v
vsakem primeru prekiniti izvajanje programa!
"Prekinitvena
točka (breakpoint) F5"
Z
menujsko izbiro možnosti "Prekinitvena točka" ali s pritiskom tipke
F5 se na mesto v izvorni kodi programa, ki ga določa trenutni položaj
cursorja, vnese zaznamek v obliki "stop znaka". To
pomeni, da se bo pri kakršnemkoli načinu izvajanja programa (počasi, hitro)
izvajanje programa na označenem mestu začasno prekinilo in zaustavilo.
Izvajanje
programa se nadaljuje, ko ponovno izberemo "Naslednji korak", "Počasi
izvajaj", "Hitro izvajaj". V bistvu gre za programirano pavzo na
mestu, kjer je zaznamovana prekinitvena točka.
Način
preizkušanja s postavitvijo prekinitvenih točk je dobrodošel, ko želimo
preveriti vsebine, začasne rezultate, itd. le na določenih, "kritičnih",
vnaprej predvidenih mestih v programu.
Prekinitvene
točke lahko postavimo na več mestih v programu.
Zaznamek
za prekinitveno točko odstranimo s ponovnim pritiskom tipke F5 oz. s ponovno
izbiro možnosti "Prekinitvena točka"