4.4 Endereçamento Indireto, Registradores INDF e FSR dos microcontroladores PIC16F627A, PIC16F628A e PIC16F648A
Revisão: Renato Kodaira
Tradução: Maria Elisa - Assessoria em Inglês e Alemão
O registrador INDF dos microcontroladores PIC16F627A, PIC16F628A e PIC16F648A não é um registrador físico. O endereçamento do registrador INDF resultará em um endereçamento indireto.
O endereçamento indireto é possível utilizando-se o registrador INDF. Qualquer instrução que utilize o registrador INDF na verdade accessará os dados apontados pelo Registrador de Seleção de Arquivo (File Select Register - FSR). A leitura do INDF propriamente dito indiretamente produzirá um 00h. A escrita no registrador INDF indiretamente resultará em uma não-operação (apesar de os bits de Status poderem ser afetados). Um endereço de 9 bits efetivo é obtido concatenando-se o registrador FSR de 8 bits e o bit IRP (STATUS<7>), conforme apresentado na Figura 4.5.
Um programa simples para apagar a posição RAM 20h-2Fh utilizando o endereçamento indireto é apresentado no Exemplo 4.1.
MOVLW 0x20 ;Inicializar o ponteiro
MOVWF FSR ;para a RAM
NEXT CLRF INDF ;apagar o registrador INDF
INCF FSR ;incrementar o ponteiro
BTFSS FSR,4 ;tudo feito?
GOTO NEXT ;não apagar o próximo
;sim continuar
IGURA 4.5: ENDEREÇAMENTO DIRETO/ INDIRETO PIC16F627A/628A/648A