Fórum témák
» Több friss téma |
Cikkek » AVR Assembly kezdőknek AVR Assembly kezdőknek
Szerző: sgt, idő: Nov 23, 2011, Olvasva: 33220, Oldal olvasási idő: kb. 1 perc
Már érintőlegesen esett szó az X, Y és Z pointerekről. Látható a regiszterek párokban vannak még pedig úgy, hogy egy 16 bites szót alkotnak. Ezek a szavak egymástól függetlenek, de mind a három egy pointer az SRAM címén. Vagyis ha X értéknek adunk mondjuk 456-t, akkor az X pointer az SRAM 456-os cellában lévő elemére fog mutatni. Ezzel pedig indirekt módon változtathatjuk meg az SRAM tartalmát vagy olvashatjuk ki azt belőle, és mindezt úgy, hogy mi felügyeljük. Lesznek majd olyan utasítások, amikkel ezeknek a mutatóknak az értékét lehet inkrementálni avagy dekrementálni, de erről majd később. Egy fontos dolgot viszont le kell szögeznem. A pointerek minimális értéke 0x60 azaz 96 decimális lehet, mivel ez előtt még az I/O regiszterek, és az általános felhasználású regiszterek vannak. Másik fontos dolog, hogy ez a kezdő érték uC függő!!! Stack – azaz veremtár. Program számlálónál már szó esett az ugrásról, szubrutinhívásról és megszakításról. Vegyük sorra, hogy mit is jelentenek ezek. Ugrás semmi mást nem csinál, csak ha a program oda ér, akkor ugrik a megfelelő címkére és fut tovább. A program működik frankón. Most nézzük a szubrutint. Ez egy olyan program részlet, amit a programunkon belül bárhol meghívható, és akárhányszor. Emiatt kerülünk problémába, hiszen ha ezt kétszer is meghívtuk a programunkban, akkor honnan fogja tudni, hogy hova kell visszatérnie? Mert hiszen itt nincs kikötve a szubrutin végén, hogy hova fog visszaérkezni, mivel RET-el van lezárva, ami csak annyit csinál, hogy visszatér. Ekkor lép közre a stack, mert amikor szubrutin hívás történik akkor a programszámláló értéke (emlékszünk ugye, hogy mire is való ez?) automatikusan elmentődik a stackben. Lefut a szubrutin, és amikor a RET-hez ér, akkor visszaolvassa a stackben elmentett értéket, és a programszámláló onnan fogja folytatni a programot, ahol az megszakadt. A megszakításnál pontosan ugyanez fog lezajlani. A stack mérete korlátozott, így figyelni kell arra, hogy ne csorduljon ki. Ha túl csordul, akkor egyszerűen lefagy, vagy pedig ez fog történni: www.youtube.com/watch (persze ez csak vicc). A cikk még nem ért véget, lapozz! Értékeléshez bejelentkezés szükséges! |
Bejelentkezés
Hirdetés |