Les variables del programa s'emmagatzemen a la memòria de dades; normalment a partir de l'adreça 20h, la primera adreça de memòria de dades disponible. La manera més senzilla és emprar la directiva cblock per definir l'adreça de la primera variable i les que definim a continuació es guardaran en adreces successives. Tancarem la definició de variables amb endc.
cblock 0x20 Memoria ; Aquesta es situarà a 20h Retard1 ; A 21h Retard2 ; A 22h endc
Les adreces disponibles per a variables són:
| Adreces | Banc | Posicions | Comentaris |
| 20h - 6Fh | 0 | 80 | |
| A0h - EFh | 1 | 80 | |
| 120h - 16Fh | 2 | 80 | |
| 70h - 7Fh | 0 | 16 | Les variables d'aquesta part són accessibles indistintament des de qualsevol dels quatre bancs |
| F0h - FFh | 1 | ||
| 170h - 17Fh | 2 | ||
| 1F0h - 1FFh | 3 |
En total, doncs, podem tenir 256 variables a la memòria de dades. Les 16 adreces compartides entre bancs poden ser útils quan pot interessar poder accedir a la mateixa variable des de bancs diferents. Una aplicació típica són les variables que es fan servir dins de les funcions d'interrupció, ja que així no cal preocupar-se de quin és el banc actiu en el moment de produir-se la interrupció. A l'exemple IT fem la següent declaració de variables:
cblock 0x20 ; Zona de memòria de dades habitual Visualit ; Una variable on guardem el que mostraran els LED endc cblock 0x70 ; Zona de memòria de dades que no depèn del banc triat W_Copia ; Guardarà el contingut de W durant la interrupció ST_Copia ; Guardarà STATUS durant la interrupció endc
També podem definir variables de dos o més bytes, per exemple per fer operacions matemàtiques de 16 bits o per emprar-les com a vectors. A continuació tenim alguns exemples:
cblock 0x20 ; Zona de memòria de dades habitual Resultat:2 ; Variable de dos bytes, estarà a 20h i 21h Vector:8 ; Vector de 8 posicions, de la 22h a la 29h Comptador ; Estarà a 2Ah endc cblock 0xA0 ; Zona de memòria de dades del banc 1 Taula:40 ; Vector de 64 posicions (40h = 64) endc cblock 0x120 ; Zona de memòria de dades del banc 2 Valors:.64 ; Vector de 64 posicions endc
... clrf Resultat ; Esborra la posició 20h clrf Resultat+1 ; Esborra la posició 21h ...
També podem definir constants (amb el seu valor) a adreces de la memòria de programa. En aquest cas la directiva db ens permet assignar-li el contingut. Cal tenir present que les adreces de memòria de programa són de 14 bits o sigui que caldrà posar dues parelles de valors per adreça.
org 0x40 Dada1 db 0,.34 ; Guarda 0022h a la posició 40h de la memòria de programa Dada2 db 0,.12,0,.11 ; Guarda 000Ch a la posició 41h i 000Bh a la 42h
org 0 ...
També podem definir adreces de la memòria EEPROM. A més la directiva de ens permet assignar ja el contingut en el moment de programar. L'accés a la memòria EEPROM es fa com si fos programa (amb org) i es codifica sumant 2100h a l'adreça de la memòria EEPROM que ens interessa. Per exemple, el tros de programa següent crea una constant (o variable) de 3 posicions de 00h a 02h de la memòria EEPROM i li assigna ja un contingut (en aquest cas tres caràcters ASCII).
org 0x2100 ; Inici de la memòria EEPROM Etiqueta de "PIC" ; 3 adreces que contenen els caràcters especificats
org 0 ...

Aquesta obra d'Oriol Boix està llicenciada sota una llicència no importada Reconeixement-NoComercial-SenseObraDerivada 3.0.