Movlw 10
Movwf fsr
Loop Movf indf,0
Addwf oc
MOVLW FF
SUBWF oc,1
BTFSC STATUS,0
GOTO siga
Addwf oc
Goto fin
siga INCF FSR,F
movf FSR,W
xorlw 0x41 ;aquí va la ultima dirección a acceder
btfss STATUS,Z
goto Loop
fin goto fin
end
Hola microcom.Te hago dos preguntas y a la vez intento corregirlas.
Primero,cuidado con el 10 que es un valor decimal. La primer posicion para registros generales(GPR) es la 0x0c= 12. O sea que estas usando y sumando probablemente registros especiales tambien. Ojo con eso.
Segundo. Al programa lo modificaria por este otro(aunque no se precisamente lo que intentas hacer):
La logica es esta: sumar posicion por posicion de la RAM a la variable OC(cuidado con esta variable, deberia estar fuera del rango de la RAM que sumas!).Si el resultado de la suma excede el valor 0xFF, no sumar el resultado y salir. Sino guardar el resultado de la suma en OC y seguir sumando hasta llegar a la posicion 0x40 inclusive.
oc EQU 0x0C
Movlw 0x0d ;primer posicion a sumar
Movwf fsr
Loop Movf indf,0
Addwf oc,w
btfsc STATUS,C ;la suma es > a 0xFF?
goto fin ;si, entonces salir sin sumar
movwf oc ;no,entonces guardar resultado de la suma en oc
INCF FSR,F
movf FSR,W
xorlw 0x41 ;aquí va la ultima dirección a acceder
btfss STATUS,Z
goto Loop
fin goto fin
end
Saludos.