Aqui tienes un ejemplo de uso del direccionamiento indirecto. La rutina guarda un "espacio" en los registros desde el 0x40 hasta el 0x5F, que son los registros utilizados para la visualización de un display LCD de 2x16.
Codigo:
;CLEAR: Borra los registros del LCD
clear movlw 0x40
movwf fsr
clear1 movf fsr,w
sublw 0x60
btfsc status,2
return
movlw " "
movwf indf
incf fsr,f
goto clear1
Como puedes ver ahorra bastante espacio, ya que mediante direccionamiento directo tendría que hacerse asi:
Codigo:
;CLEAR: Borra los regsitros del LCD(Direccionamiento directo)
clear movlw " "
movwf 0x40
movwf 0x41
movwf 0x42
movwf 0x43
-------------------------------
-------------------------------
movwf 0x5F
return