Muchas gracias por la respuesta, ahora lo tengo todo claro, ya estoy acostumbrado a trabajar con los tipicos CBLOCK y EQU , pero bueno que se va hacer, tendre que adaptarme haha, tengo una duda mas, al usar la directiva UDATA hay que utilizar CODE como lo decis, en vez de ORG no? entonces al final del codigo ya no se pone END?
EDIT:
estoy haciendo un programa de multiplicacion con el pic16f84A, este es el codigo
__CONFIG _FOSC_XT & _WDTE_OFF & _PWRTE_OFF & _CP_OFF
#include "p16F84A.inc"
LIST P=16F84A
Variables UDATA 0x0C
Multiplicando RES 1 ;0x0C
Multiplicador RES 1 ;0x0D
ByteSuperior RES 1 ;0x0E
ByteInferior RES 1 ;0x0F
Contador RES 1 ;0x10
;-------------------------------------------------------------------------------
CODE 0x00
Inicio
bsf STATUS,RP0 ;Configurando puertos A y B como entradas
movlw b'11111111'
movwf TRISA
movwf TRISB
bcf STATUS,RP0
Principal
movlw .8 ;Cargando Contador
movwf Contador
movf PORTA,W ;Guardando datos del puerto A en Multiplicando
movwf Multiplicando
movf PORTB,W
movwf Multiplicador ;Guardando datos del puerto B en Multiplicador
Multiplicacion
rrf Multiplicador
btfsc STATUS,C
goto SI
NO
rrf ByteSuperior ;Rota a la derecha el Producto
rrf ByteInferior
decf Contador,F ;Decrementando contador}
movf Contador,W ;Comprobando si Contador=0
btfss STATUS,Z
goto Multiplicacion
goto Fin
SI
movf Multiplicando,W ;Suma Multiplicando con ByteSuperior
addwf ByteSuperior,F
goto NO
Fin
goto Fin
END
EL problema es que al compilar me sale el siguiente error:
Error - section 'Variables' can not fit the absolute section. Section 'Variables' start=0x0000000c, length=0x00000005
no entiendo por que pasa eso