<< Előző oldal Vissza a tartalomjegyzékhez Következő oldal >>
11.4.10. Feltétel nélküli elágazás
Assembly programozás tartalomjegyzék
Ugrás közvetlen címzéssel
Ugrás közvetett címzéssel
Szubrutinhívás
Ugrás közvetlen címzéssel:
Közvetlen címzéssel a teljes programmemória-terület elérhető. Ehhez, a memóriaterület nagyságától függően, 1..3 utasításra van szükség. A GOTO feltétel nélküli ugró utasítással a PC programszámláló értéke tetszőlegesre állítható, így a program a beállított helyről folytatódik. A PC alsó 11 bitje az utasításban elhelyezett címnek megfelelően áll be, a felső bitek pedig a PCLATH regiszter alábbi ábrán látható helyiértékeiről töltődnek be a GOTO utasítás végrehajtásakor.
Ahhoz, hogy (2k-nál nagyobb programmemória esetén) a GOTO utasítás megfelelően működjön a PCLATH regiszter értékét előre be kell állítani az elérni kívánt memórialapnak megfelelően.
A közvetlen címzés bemutatása 2k memória-szónál nem nagyobb program esetén:
... ... goto CIMKE ;ugrás a CIMKE azonosítójú programmemória-helyre ...
A közvetlen címzés bemutatása 2k..4k memória-szó nagyságú programok esetén:
... ... bsf PCLATH,3 ;a 2. programmemória-lap kiválasztása goto CIMKE ;ugrás a CIMKE azonosítójú programmemória-helyre ...
A közvetlen címzés bemutatása 4k memória-szónál nagyobb programok esetén:
... ... bcf PCLATH,4 ;a 2. programmemória-lap kiválasztása bsf PCLATH,3 ;a 2. programmemória-lap kiválasztása goto CIMKE ;ugrás a CIMKE azonosítójú programmemória-helyre ...
Ugrás közvetett címzéssel:
Közvetett címzéssel a teljes programmemória-terület elérhető. Ehhez, a kívánt ugrás nagyságától függően, 2..4 utasításra van szükség. A PC programszámláló értéke szoftverből tetszőlegesen módosítható, így a program a beállított helyről folytatódik. A PC alsó 8 bitje a PCL vezérlő regiszter írásával, a felső 5 bit pedig a PCLATH regiszter írásával állítható be. A PCLATH értéke a PCL regiszter írásakor kerül át a PC felső részébe, tehát a beállítást a PCLATH értékének megadásával kell kezdeni.
A PCL regiszter 8 bites mérete 256 szavas lapokra tagolja a programmemóriát. Az így keletkező lapokon belüli ugráshoz elegendő csak a PCL-t változtatni.
Ez a programelágazási mód az úgynevezett számított GOTO (Computed GOTO).
Egy (256 szavas) lapon belüli ugrás:
... ... movlw 0x05 ;W = 5, az eltolás megadása addwf PCL,1 ;PCL = PCL + 5 ... ;ide ugrana, ha W = 0 lenne ... ;ide ugrana, ha W = 1 lenne ... ;ide ugrana, ha W = 2 lenne ... ;ide ugrana, ha W = 3 lenne ... ;ide ugrana, ha W = 4 lenne ... ;ide ugrik, mert W = 5 ...
Az ADDWF utasítás helyén SUBWF és MOVWF utasítás is állhat.
Egy távoli ugrás:
... ... movlw 0x02 ;W = 02d, a cím felső részének megadása movwf PCLATH,1 ;PCLATH = 02h movlw 0x0A ;W = 0Ah, a cím alsó részének megadása movwf PCL,1 ;PCL = 0Ah, PC = 20Ah ...
Tudomány és Technika (test@t-es-t.hu)
<< Előző oldal Vissza a tartalomjegyzékhez Vissza a lap tetejére Következő oldal >>