34
Microcontrolador 8051 Microcontrolador 8051 Assembly Assembly 8051 8051 UTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk UTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Assembly 8051 - UTFPR

  • Upload
    others

  • View
    23

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

AssemblyAssembly80518051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Page 2: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

● Num sistema microprocessado, geralmente, não existe um sistema operacional;

● O programa desenvolvido pelo programador deve cuidar tanto da lógica do programa, bem como da configuração e acesso ao hardware e do gerenciamento de memória;

● Geralmente existe limitação de espaço de memória;

Page 3: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Page 4: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Linguagem AssemblyLinguagem Assembly

Page 5: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

● A Linguagem Assembly● É a codificação dos códigos de máquina para uma

linguagem mais próxima da linguagem entendida pelo ser humano;

● As instruções do processador são codificadas em mnemônicos para facilitar a identificação de sua funcionalidade;

● A tradução da linguagem assembly para os códigos de máquina do processador é feita através de um programa chamado assembler (ou montador)

Page 6: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

● A Linguagem Assembly● É totalmente atrelada ao processador, ou seja, cada

processador possui a sua própria linguagem;

Page 7: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Linguagem AssemblyLinguagem Assembly

do uC 8051do uC 8051

Page 8: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

● As instruções do 8051 podem ser classificadas em 5 tipos diferentes:

– Transferência de dados;

– Aritméticas;

– Lógicas;

– Booleanas;

– Desvio;

Page 9: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Modos de Endereçamento● Define o modo como os dados são acessados;

● O 8051 possui 5 modos de endereçamento:

– Endereçamento direto;

– Endereçamento indireto;

– Endereçamento via registrador;

– Endereçamento por constante imediata;

– Endereçamento indexado;

Page 10: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Modos de Endereçamento● Endereçamento imediato: o dado é especificado na

própria instrução:

mov A, #31 ; carrega o valor 31 no acumulador

– O operando é identificado pelo símbolo #;

31

Acumulador

Page 11: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Modos de Endereçamento● Endereçamento direto: o endereço do dado é

especificado diretamente na instrução:

mov A, 31 ; carrega o conteúdo do endereço 31 no acumulador

98

73

1

128

29

30

31

32

Memória

1

Acumulador

Page 12: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Modos de Endereçamento● Endereçamento indireto: o dado é acessado através do

endereço contido nos registradores R0 ou R1.

– Quando o conteúdo do registrador é um endereço, este registrador é precedido pelo símbolo @;

– Neste caso, os registradores R0 e R1 atuam como ponteiros para o dado

Page 13: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Modos de Endereçamento

mov A, @R0 ; carrega o conteúdo da posição; de memória indicada no; registrador R1 no acumulador

98

73

1

128

29

30

31

32

Memória

1

Acumulador

31

R0

Page 14: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Modos de Endereçamento● Endereçamento indexado: o dado é acessado através do

endereço contido no registrador DPTR.

movc A, @A+DPTR ; carrega o conteúdo da; posição de memória de; programa indicada no; registrador DPTR no acumulador

movx A, @DPTR ; carrega o conteúdo da posição; de memória RAM externa indicada;no registrador DPTR no acumulador

– Neste caso, o registrador DPTR atua como ponteiro para o dado

Page 15: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Modos de Endereçamento

movx A, @DPTR ; carrega o conteúdo da posição; de memória RAM externa indicada;no registrador DPTR no acumulador

98

73

1

128

1A29

1A30

1A31

1A32

Memória

1

Acumulador

1A31

DPTR

Page 16: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Modos de Endereçamento● Endereçamento via Registrador: o dado é acessado

através dos registradores R0 a R7.

mov A, R5 ; carrega o conteúdo do;registrador R5 no acumulador

98

73

1

128

R7

R6

R5

R0

Banco de Registradores

1

Acumulador

. . .

Page 17: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Funcionamento da PILHA

● A pilha é uma estrutura de armazenamento de dados em que cada novo dado é colocado sempre no topo da pilha;

● O registrador stack-pointer (SP) aponta para o topo da pilha;

● A cada novo dado colocado na pilha, o registrador SP é incrementado, para apontar o topo da pilha;

● A cada dado retirado da pilha, o registrador SP é decrementado.

Page 18: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Funcionamento da PILHA

● As instruções PUSH e POP inserem e retiram respectivamente os dados da pilha;

● Nos microprocessadores, a pilha é usada principalmente para guardar o estado do processador na chamada de sub-rotinas e interrupções;

Page 19: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Funcionamento da PILHA● Estado atual da pilha

30h Dado 1

SP

30h

31h

32h

33h

Memória

2Fh

A

1Ah

R0

Page 20: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Funcionamento da PILHA● Executando uma instrução push ACC

– Passo 1: o registrador SP é incrementado, apontando para a próxima posição de memória:

31h Dado 1

SP

30h

31h

32h

33h

Memória

2Fh

A

1Ah

R0

Page 21: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Funcionamento da PILHA● Executando uma instrução push ACC

– Passo 2: o conteúdo do acumulador é copiado para a posição apontada pelo registrador SP:

31h Dado 1

SP

30h

2Fh31h

32h

33h

Memória

2Fh

A

1Ah

R0

Page 22: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Funcionamento da PILHA● Executando uma instrução push R0

– Passo 1: o registrador SP é incrementado, apontando para a próxima posição de memória:

32h Dado 1

SP

30h

2Fh31h

32h

33h

Memória

2Fh

A

1Ah

R0

Page 23: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Funcionamento da PILHA● Executando uma instrução push R0

– Passo 2: o conteúdo do registrador R0 é copiado para a posição apontada pelo registrador SP:

32h Dado 1

SP

30h

2Fh

1Ah

31h

32h

33h

Memória

2Fh

A

1Ah

R0

Page 24: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Funcionamento da PILHA● Novo estado da pilha:

32h Dado 1

SP

30h

2Fh

1Ah

31h

32h

33h

Memória

2Fh

A

1Ah

R0

Page 25: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Funcionamento da PILHA● Executando uma instrução pop R0

– Passo 1: o conteúdo da posição apontada pelo registrador SP é copiado para o registrador R0:

32h Dado 1

SP

30h

2Fh

1Ah

31h

32h

33h

Memória

2Fh

A

1Ah

R0

Page 26: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Funcionamento da PILHA● Executando uma instrução pop ACC

– Passo 2: o conteúdo da posição de memória apontada pelo registrador SP é copiado para o acumulador:

31h Dado 1

SP

30h

2Fh31h

32h

33h

Memória

2Fh

A

1Ah

R0

Page 27: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Estrutura Básica de um programa em Linguagem Assembly (para o uC 8051)

● Um programa em linguagem assembly possui os seguintes elementos básicos:

– Instruções: são os mnemônicos das instruções do processador;

– Operandos: são as informações referentes aos dados processados pelas instruções;

– Pseudo-instruções: são declarações inseridas no código fonte para orientar o montador;

Page 28: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Estrutura Básica de um programa em Linguagem Assembly (para o uC 8051)

– Definições: são declarações que atribuem um nome a algumas constantes, tornando mais fácil a refer ncia ềno resto do programa;

– Rótulos (labels): são nomes atribuídos à endereços no programa;

– Comentários: informações colocadas pelo programador para documentar o programa. É qualquer texto colocado após um sinal de ponto-e-vírgula;

Page 29: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Estrutura Básica de um programa em Linguagem Assembly (para o uC 8051)

● A formatação de um programa em assembly é bastante rígida;

● Cada linha do programa contém uma informação para o montador;

Page 30: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Estrutura Básica de um programa em Linguagem Assembly (para o uC 8051)

● A estrutura da linha é a seguinte:

– Os rótulos são colocados próximos a margem esquerda da linha. Podem vir seguidos do sinal : (dois pontos);

– Seguindo o rótulo, está o mnemônico da instrução e os operandos;

– Após os operandos estão os comentários;

Page 31: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Estrutura Básica de um programa em Linguagem Assembly (para o uC 8051)

● Exemplo:

inicio: mov SP, #30h ; inicializa a pilha

mov A, #45 ; atribui o valor inicial ; ao acumulador

Page 32: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Estrutura Básica de um programa em Linguagem Assembly (para o uC 8051)

● Estruturas básicas de um programa em assembly:

– Subrotinas: uma porção de código executada várias vezes no programa. São chamadas por instruções no programa e causam um desvio da sequência normal de execução do programa;

– Interrupções: causam o desvio do fluxo normal de execução do programa devido a um evento de hardware. São como as subrotinas, mas não são causadas por instruções do processador, mas sim por eventos de hardware.

Page 33: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Estrutura Básica de um programa em Linguagem Assembly (para o uC 8051)

● Estruturas básicas de um programa em assembly:

– Decisões: são estruturas de programação que permitem desviar o fluxo de execução de um programa conforme o estado de determinadas condições. Estas condições são verificadas pelos flags;

– Repetições: são estruturas de programação que permitem executar um pedaço de código várias vezes;

Page 34: Assembly 8051 - UTFPR

Microcontrolador 8051Microcontrolador 8051

UTFPR / DAELN Microcontroladores 1 Prof. Gabriel KovalhukUTFPR / DAELN Microcontroladores 1 Prof. Gabriel Kovalhuk

Estrutura Básica de um programa em Linguagem Assembly (para o uC 8051)

● Estruturas básicas de um programa em assembly:

– Pseudo-instruções:● ORG: definem um endereço de memória, onde a

instrução da linha seguinte será alocada;● END: indica o fim de um programa;● EQU: Atribuem um valor a um rótulo. São usados

para definir constantes;● DB, DW: definem (reservam) espaços de memória

para alocar dados. São usados para definir variáveis;