A ma használatos Pic18 mikrokontrollereknél az adatmemória 16 részre van felosztva, melyeknek mérete egyenként 256 bájtosak a 0-a címet is számolva. Így minden bank 8 bittel címezhető.
A memórialapok címzése a BSR (Bank Select Register) alsó 4 bitjével történik, ez a négy bit egészíti ki az egyszavas utasítások 8 címbitjét az adatmemória megcímzéséhez szükséges 12 bitre. A gyakran használt regiszterek könnyebb elérésének biztosítására szolgál az úgynevezett Access Bank, ami egy olyan memórialapot jelent, amely mindig elérhető egyetlen utasításciklusban, a BSR regiszter tartalmától függetlenül. Erre a lapra vannak leképezve a speciális funkciójú regiszterek (0xF60 - 0xFFF) és az általános célú regiszterek első 96 bájtja (0x000 - 0x05F).
http://esca.atomki.hu/PIC18/intro.html
A RAM memóriába, másként fogalmazva a file regiszterbe memóriafoglalás a változóknak:
FŐPROGRAM
LIST P=PIC18F45K42 ; ISO 8859-2 / FOPROGRAM.asm
; LIST E=OFF ;OFF:hibafájl generálás tiltás (https://www.muszeroldal.hu/measurenotes/pictanf.pdf
; LIST d=OFF ; Listafájl generálás tiltás ; nem működik, hibát jelez rá
; LIST Q=OFF ; Hibaüzenetek tiltása/engedélyezése ; nem működik, hibát jelez rá
#include p18f45k42.inc ;
; A PROGRAM FŐ OLDALA / Megjegyzés
; Fosc = 8 MHz ; Az UART valószínűleg 8 MHz-re van beállítva!!! / Megjegyzés
CODE
cimkek: ;Másik fájlból globálissá tett cimkék beimportálása, vagyis az objektumok behívása
extern konfig ; Esetünkben a config.asm fájlból a konfig cimke, vagyis a konfig eljárás beimportálása amit
; korábban globálissá tettünk
valtozok: UDATA _ACS ; 0x5F címig 0x60 már nem jó, Ha nincs kezdo memoriacim megadva, akkor a 0x00 címtől kezdi
; lefoglalni a memóriát az ACCESS ramban. Ez az ACCESS ramterület! Ez a Pic18-ra vonatkozik.
; http://www.t-es-t.hu/elokep/pic/felhkk/kk/sz110509.htm
WREG_TEMP RES 1 ; w register for context saving (ACCESS)
STATUS_TEMP RES 1 ; status used for context saving
BSR_TEMP RES 1 ; bank select used for ISR context saving
Akarmi RES 2 ; 2 bájtos adat. Nem lépheti túl a 0x5F címet!
;Objektum fájlok esetében az általános adatmemória-terület azonosítóinak megadása az adat-szekciókban lehetséges, amelyek a következők lehetnek:
; · az UDATA fordításvezérlő utasítással kezdődő értékadás nélküli deklarációs rész;
; · az UDATA_OVR fordításvezérlő utasítással kezdődő értékadás nélküli felülírható deklarációs rész;
; · az UDATA_SHR fordításvezérlő utasítással kezdődő értékadás nélküli deklarációs rész a minden lapról elérhető adatmemória-helyekhez;
; · az IDATA fordításvezérlő utasítással kezdődő értékadásos deklarációs rész.
Seged_1 RES 1 ; Seged_1 mentve van int_L-kor
global Seged_1 ; Elsősorban adat ideiglenes tárolására, pld. összehasonlítésra
Objektumok, illetve objektum fájlok. jelen esezben 1 fájl, a config.asm
Objektum fájlok írásakor az ORG fordításvezérlő utasítást nem használhatunk, így csak a CODE utasítást használjuk kötelező módon.