Escolar Documentos
Profissional Documentos
Cultura Documentos
02 MemoriasASM
02 MemoriasASM
6 de novembro de 2013
Arquitetura RISC
Apenas 35 instruções para aprender
Todas as instruções são executadas em um ciclo, exceto os
saltos
Temporizador Watch-dog
1 Carrega y no registrador R1
2 Carrega z no registrador R2
3 Se R2 = 0, pule para instrução 6
4 Comande a ULA a dividir R1 por R2, armazenando o
resultado em R3
5 Armazena R3 em x
6 Pare
Exemplos:
Processor 16f877
#include <p16f877.inc>
Exemplos:
EQU: atribui um nome a uma posição específica da
memória RAM. Cria uma VARIÁVEL
CBLOCK 0x20
(tab) START ; endereço da memória 0x20
(tab) RELE ; endereço da memória 0x21
(tab) STOP ; endereço da memória 0x22
(tab) LEFT ; endereço da memória 0x23
(tab) RIGHT ; endereço da memória 0x24
ENDC
Exemplos:
ORG: especifica uma posição da memória para o
PROGRAMA
ORG 0x100
START ...
...
ORG 0x1000
TABLE ...
...
...
END ; Fim de programa
Grupos de Instruções
Transferência de dados
MOVWF
Lógica e Aritmética
Soma, Subtração, Incremento, E, OU, XOR, ...
Direcionadores de programa
BTFSC, CALL
Ações:
MOV (Move): Move um byte de origem para destino
ADD: Soma dois valores
SUB (Subtract): Subtrai
AND: Faz um “E” lógico
IOR (Inclusive OR): Faz um “OU” lógico
XOR (Exclusive OR): Faz um “XOR” lógico
CLR (Clear): Zera um byte
COM (Complement): Inverte os bits de um byte
DEC (Decrement): Subtrai 1
INC (Increment): Soma 1
SWAP: Inverte os nibbles de um byte
Ações (continuação):
RR (Rotate Right): Rotaciona os bits de um byte uma
posição à direita (o carry participa da rotação)
RL (Rotate Left): Rotaciona os bits de um byte uma
posição à esquerda (o carry participa da rotação)
BC (Bit Clear): Zera um bit
BS (Bit Set): Seta um bit
BT (Bit Test): Testa o bit (se é 0 ou 1)
GOTO: Vai para um endereço determinado
CALL: Vai para um endereço determinado (mas memoriza
posição atual para retornar)
RETURN: Retorna ao local onde havia o CALL
Ações (continuação):
Especificadores:
Referências:
Ação Condicional:
Condições:
EXEMPLOS:
EXEMPLOS:
EXEMPLOS:
EXEMPLOS:
“Decrement File”
Decrementa o valor do file 0x1C e coloca o resultado no
próprio file
EXEMPLOS:
Programação Assembly