Notação:
f: um dos registradores do banco
de registradores (memória ram interna) (0 =< f
<= 4f )
os 12 registradores
0 a b são especiais(SFR), os 68 registradores de 0c a 4f são
de "propósito geral"(GPR), isto é são a memória
ram
do
microcontrolador (o campo f de uma instrução tem na verdade
7 bits, o que permitiria endereçar até 128 bytes de ram)
w: o acumulador de propósito
geral da ULA
d: mnemônico para o destino
de uma operação, que pode ser f (i.é 1) ou
w (i.é 0)
k: mnemônico para um valor
literal (i. é. constante) de 8 bits
<b>: mnemônico para um
número de 3 bits identificando um bit de um byte (bit 7 é
o mais significativo e bit 0 o menos significativo)
opr: mnemônico
para uma das seguintes operações:
add (adição), sub (subtração), and
(
"e lógico"), ior ("ou lógico"), xor ("ou exclusivo
lógico")
end: número de 11 bits representando
o endereço de uma instrução ( usado em saltos e chamadas
de rotinas)
Exemplos:
movf f,w
; f => w
movf f, f
; f => f afeta o bit Z, útil para testar se f é zero
movlw h'1a'
; 0x1a => w
Exemplos:
addwf f,w
; f + w =>w (soma conteúdo de f e w, resultado em
w)
addwf f, f
; f + w => f (soma conteúdo de f e w, resultado em f)
subwf f, w
; f - w => w
subwf f, f
; f - w => f
andwf f, w
; f & w => w
iorwf f, w
; f | w => w
Exemplos:
addlw k
; k + w => w
sublw k
; k - w => w
Exemplos:
incf f, f
; f+1 => f
decf f,w
; f-1 => w
bcf f, 7
; 0 => f<7>
movlw 0xc
; 0xc => w
movwf FSR
; inicializa FSR com o endereço do 1º registrador de propósito
geral (0xc)
movlw 0x50
; 50h => w end do último registrador + 1
loop
clrf INDF
; zera ((FSR))
incf FSR
; faz FSR apontar para o próximo registrador de propósito
geral
subfw FSR, w ; (FSR) - 50h =>
w
bnz loop
; volta ao laço se # 0