Beruflich Dokumente
Kultur Dokumente
Teoria
operandos);
Modos de endereçamento com endereços absolutos e simbólicos;
Valores
Vcc e Gnd binários
Microcontrolador
(hexadecimal)
Vocabulário próprio e
restrito
Conjunto de Instruções
Aula 00
1 Noções de Linguagem Assembly
Conjunto de Instruções
O conjunto de instruções varia de CPU para CPU e costuma ser definido pelo
próprio fabricante, mas basicamente é formado por:
Instruções de comparação;
Instruções de desvios;
Programa
Para executar uma tarefa qualquer, a CPU precisa receber instruções precisas sobre
o que fazer. Uma seqüência adequada de instruções, para a realização de uma
determinada tarefa, se constitui num PROGRAMA.
Linguagem de Programação
Binário Hexadecimal
00000000 00
01110100 00000101 74 05
0102 05
0103 75
0104 F0
0105 07
00 NOP
74 05 MOV A,#05H
75 F0 07 MOV B,#07H
Assembly X Assembler
não relocável, definindo assim as posições de memória a serem utilizadas pelo programa.
Na maioria dos casos, a operação de ligação e alocação é feita por uma única ferramenta.
Aula 00
1 Noções de Linguagem Assembly
ORG
Para definir a origem da área de montagem.
END
Para definir o fim do programa em Assembly.
EQU
Para definir Equivalência entre endereços ou nomes.
DC
Para definir valores constantes em posições de memória.
DS
Para definir ou reservar área de memória sem colocar valor inicial.
Aula 00
2 Palavras de Instruções da Família MCS51
A figura abaixo mostra um exemplo de uma típica palavra de instrução de um byte para
os microcontroladores com núcleo do 8051.
MOV A,R3
A palavra de 8 bits contida no registrador R3 (conteúdo do registrador R3) é
copiada para o conteúdo do acumulador.
Para que um maior número de instruções esteja disponível e para proporcionar maior
flexibilidade no acesso aos dados, sem que seja necessário aumentar o tamanho da
palavra, os microprocessadores com tamanho de palavra menor usam instruções
definidas com mais de uma palavra (instruções de múltiplos bytes).
Objetivos:
IAR.
Simulação
Teste de Mesa
Programa-Fonte Aula00_v0
; Programa-Fonte Aula00_v0
$include(REG51.inc)
clr A
mov dptr,#5300H
nop
movx A,@dptr
nop
dec A
jnz 0007H
nop
add A,30H
mov P1,A
nop
sjmp $
end
Aula 00
4 Primeiro Exemplo
$io8051.h
NAME main
PUBLIC main
ORG 0FFFEh
DC16 main
RSEG RCODE
main clr A
mov dptr,#5300H
nop
movx A,@dptr
nop
dec A
jnz 0007h
nop
add A,30H
mov P1,A
nop
END main
Aula 00
4 Primeiro Exemplo
Aula 00
5 Primeiro Exemplo – Simulação – Teste de Mesa
Colocar valor
inicial = #AAh
Colocar valor
inicial = #04h
Aula 00
6 Primeiro Exemplo – Simulação – RIDE
Colocar valor
inicial = AAh
Colocar valor
inicial = 04h
Observar o
endereço
0007h
Aula 00
6 Primeiro Exemplo – Simulação – RIDE
Programa-Fonte Aula00_v1
Montar o programa anterior Aula00_v0 a partir do endereço de memória 5000H.
Usar a Diretiva da Linguagem Assembly ORG.
Vai gerar um erro pois não alteramos o endereço absoluto do salto para 5007H. Isso
acontece porque os saltos devem ocorrer dentro do programa.
Solicitar para o aluno identificar o erro e corrigi-lo.
Certificar-se de que o aluno verifique que Diretiva do Assembly não é instrução.
Induzir o aluno procurar um solução mais prática – utilizando endereços relativos.
Ressaltar as vantagens de se usar endereços relativos.
Programa-Fonte Aula00_v2
Montar o programa anterior Aula04_v1 usando endereço relativo (Rótulo ou Label).
Programa-Fonte Aula00_v3
Montar o programa anterior Aula04_v2 a partir do endereço de memória 5200H.
Certificar-se de que o aluno verifique:
que o montador atribuiu o endereço 5207H para o Rótulo ou Label definido no
programa anterior.
As vantagens do uso de endereços relativos.
Aula 00
8 Variação do Primeiro Exemplo – Simulação – RIDE
Observar o erro
ocorrido
Aula 00
8 Variação do Primeiro Exemplo – Simulação – RIDE
Observar o
endereço 5007H
Aula 00
8 Variação do Primeiro Exemplo – Simulação – RIDE
Rótulo ou
Label - JAO
Aula 00
8 Variação do Primeiro Exemplo – Simulação – RIDE
Rótulo ou
Label - JAO
Aula 00
8 Variação do Primeiro Exemplo – Simulação – RIDE