En la mayoría de las aplicaciones el propósito de las directivas CBLOCK y ENDC es asignar direcciones (generalmente de memoria RAM de datos) a muchas etiquetas. La lista queda enmarcada entre las directivas CBLOCK y ENDC.
Un ejemplo típico de utilización:
CBLOCK 0x0C ; Las variables se posicionan a partir de esta posición de RAM.
Centenas ; La variable “Centenas” ocupa la posición 0x0C de RAM.
Decenas ; La variable “Decenas” ocupa la posición 0x0D de RAM.
Unidades ; La variable “Unidades” ocupa la posición 0x0E de RAM.
ENDC
El valor que acompaña a la directiva CBLOCK (0x0C en el anterior ejemplo), indica el valor de arranque para el primer nombre del bloque de etiquetas. Si este valor no es encontrado, la primera constante recibirá el valor inmediatamente superior al de la ultima constante del CBLOCK anteriormente definido. Por ejemplo, si a lo largo del programa del ejemplo anterior se encontrase la siguiente definición de variables, ocuparían las posiciones que se indican.
CBLOCK ; Las variables se posicionan a partir de la posición de RAM definida
; por el último bloque CBLOCK.
Operando , La variable “Operando” ocupa la posición 0x0F de RAM.
Resultado , La variable “Resultado” ocupa la posición 0x10 de RAM.
Auxiliar , La variable “Auxiliar” ocupa la posición 0x11 de RAM.
ENDC
Si el primer CBLOCK en el archivo fuente no define ningún comienzo los valores asignados empiezan con el cero, que corresponde a la zona SFR de la RAM de datos, normalmente no es correcto ya que sobrescribiría los datos de esta zona y el programa no funcionaría correctamente.