Você está na página 1de 34

Microcontrolador 8051

Assembly
8051

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051

Num sistema microprocessado, geralmente, no existe um


sistema operacional;
O programa desenvolvido pelo programador deve cuidar
tanto da lgica do programa, bem como da configurao
e acesso ao hardware e do gerenciamento de memria;
Geralmente existe limitao de espao de memria;

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051

Linguagem Assembly

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051

A Linguagem Assembly
a codificao dos cdigos de mquina para uma
linguagem mais prxima da linguagem entendida pelo ser
humano;
As instrues do processador so codificadas em
mnemnicos para facilitar a identificao de sua
funcionalidade;
A traduo da linguagem assembly para os cdigos de
mquina do processador feita atravs de um programa
chamado assembler (ou montador)

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051

A Linguagem Assembly
totalmente atrelada ao processador, ou seja, cada
processador possui a sua prpria linguagem;

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051

Linguagem Assembly
do uC 8051

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051

As instrues do 8051 podem ser classificadas em 5 tipos


diferentes:

Transferncia de dados;

Aritmticas;

Lgicas;

Booleanas;

Desvio;

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Modos de Endereamento

Define o modo como os dados so acessados;

O 8051 possui 5 modos de endereamento:

Endereamento direto;

Endereamento indireto;

Endereamento via registrador;

Endereamento por constante imediata;

Endereamento indexado;

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Modos de Endereamento

Endereamento imediato: o dado especificado na


prpria instruo:
movA,#31

;carregaovalor31noacumulador

O operando identificado pelo smbolo #;


Acumulador
31

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Modos de Endereamento

Endereamento direto: o endereo do dado


especificado diretamente na instruo:
movA,31
Memria
29

98

30

73

31

32

128

UTFPR / DAELN

;carregaocontedodoendereo31no
acumulador
Acumulador
1

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Modos de Endereamento

Endereamento indireto: o dado acessado atravs do


endereo contido nos registradores R0 ou R1.

Quando o contedo do registrador um endereo, este


registrador precedido pelo smbolo @;

Neste caso, os registradores R0 e R1 atuam como


ponteiros para o dado

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Modos de Endereamento
movA,@R0

;carregaocontedodaposio
;dememriaindicadano
;registradorR1noacumulador
Memria

R0
31

UTFPR / DAELN

29

98

30

73

31

32

128

Microcontroladores 1

Acumulador
1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Modos de Endereamento

Endereamento indexado: o dado acessado atravs do


endereo contido no registrador DPTR.
movcA,@A+DPTR

movxA,@DPTR

;carregaocontedoda
;posiodememriade
;programaindicadano
;registradorDPTRnoacumulador
;carregaocontedodaposio
;dememriaRAMexternaindicada
;noregistradorDPTRnoacumulador

Neste caso, o registrador DPTR atua como ponteiro para o


dado

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Modos de Endereamento
movxA,@DPTR

;carregaocontedodaposio
;dememriaRAMexternaindicada
;noregistradorDPTRno
acumulador
Memria

DPTR
1A31

UTFPR / DAELN

1A29

98

1A30

73

1A31

1A32

128

Microcontroladores 1

Acumulador
1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Modos de Endereamento

Endereamento via Registrador: o dado acessado


atravs dos registradores R0 a R7.
movA,R5

;carregaocontedodo
;registradorR5noacumulador

Banco de
Registradores
R7

98

R6

73

R5

Acumulador
1

...
R0

UTFPR / DAELN

128

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
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.

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Funcionamento da PILHA

As instrues 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 interrupes;

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Funcionamento da PILHA

Estado atual da pilha

R0

Memria
1Ah

A
2Fh

32h
31h

SP
30h

UTFPR / DAELN

33h

30h

Microcontroladores 1

Dado 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Funcionamento da PILHA

Executando uma instruo push ACC

Passo 1: o registrador SP incrementado, apontando


para a prxima posio de memria:
R0

Memria
1Ah

A
2Fh

32h
31h

SP
31h

UTFPR / DAELN

33h

30h

Microcontroladores 1

Dado 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Funcionamento da PILHA

Executando uma instruo push ACC

Passo 2: o contedo do acumulador copiado para a


posio apontada pelo registrador SP:
R0

Memria
1Ah

A
2Fh
SP
31h

UTFPR / DAELN

33h
32h
31h

2Fh

30h

Dado 1

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Funcionamento da PILHA

Executando uma instruo push R0

Passo 1: o registrador SP incrementado, apontando


para a prxima posio de memria:
R0

Memria
1Ah

A
2Fh
SP
32h

UTFPR / DAELN

33h
32h
31h

2Fh

30h

Dado 1

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Funcionamento da PILHA

Executando uma instruo push R0

Passo 2: o contedo do registrador R0 copiado para


a posio apontada pelo registrador SP:
R0

Memria
1Ah

A
2Fh
SP
32h

UTFPR / DAELN

33h
32h

1Ah

31h

2Fh

30h

Dado 1

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Funcionamento da PILHA

Novo estado da pilha:

R0

Memria
1Ah

A
2Fh
SP
32h

UTFPR / DAELN

33h
32h

1Ah

31h

2Fh

30h

Dado 1

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Funcionamento da PILHA

Executando uma instruo pop R0

Passo 1: o contedo da posio apontada pelo


registrador SP copiado para o registrador R0:
R0

Memria
1Ah

A
2Fh
SP
32h

UTFPR / DAELN

33h
32h

1Ah

31h

2Fh

30h

Dado 1

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Funcionamento da PILHA

Executando uma instruo pop ACC

Passo 2: o contedo da posio de memria apontada


pelo registrador SP copiado para o acumulador:
R0

Memria
1Ah

A
2Fh
SP
31h

UTFPR / DAELN

33h
32h
31h

2Fh

30h

Dado 1

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Estrutura Bsica de um programa em Linguagem
Assembly (para o uC 8051)

Um programa em linguagem assembly possui os


seguintes elementos bsicos:

Instrues: so os mnemnicos das instrues do


processador;

Operandos: so as informaes referentes aos dados


processados pelas instrues;

Pseudo-instrues: so declaraes inseridas no


cdigo fonte para orientar o montador;

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Estrutura Bsica de um programa em Linguagem
Assembly (para o uC 8051)

Definies: so declaraes que atribuem um nome a


algumas constantes, tornando mais fcil a referncia
no resto do programa;

Rtulos (labels): so nomes atribudos endereos


no programa;

Comentrios: informaes colocadas pelo


programador para documentar o programa. qualquer
texto colocado aps um sinal de ponto-e-vrgula;

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Estrutura Bsica de um programa em Linguagem
Assembly (para o uC 8051)

A formatao de um programa em assembly bastante


rgida;
Cada linha do programa contm uma informao para o
montador;

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Estrutura Bsica de um programa em Linguagem
Assembly (para o uC 8051)

A estrutura da linha a seguinte:

Os rtulos so colocados prximos a margem


esquerda da linha. Podem vir seguidos do sinal : (dois
pontos);

Seguindo o rtulo, est o mnemnico da instruo e os


operandos;

Aps os operandos esto os comentrios;

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Estrutura Bsica de um programa em Linguagem
Assembly (para o uC 8051)

Exemplo:
inicio:

mov SP, #30h


mov A, #45

UTFPR / DAELN

; inicializa a pilha
; atribui o valor inicial
; ao acumulador

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Estrutura Bsica de um programa em Linguagem
Assembly (para o uC 8051)

Estruturas bsicas de um programa em assembly:

Subrotinas: uma poro de cdigo executada vrias


vezes no programa. So chamadas por instrues no
programa e causam um desvio da sequncia normal de
execuo do programa;

Interrupes: causam o desvio do fluxo normal de


execuo do programa devido a um evento de
hardware. So como as subrotinas, mas no so
causadas por instrues do processador, mas sim por
eventos de hardware.

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Estrutura Bsica de um programa em Linguagem
Assembly (para o uC 8051)

Estruturas bsicas de um programa em assembly:

Decises: so estruturas de programao que


permitem desviar o fluxo de execuo de um programa
conforme o estado de determinadas condies. Estas
condies so verificadas pelos flags;

Repeties: so estruturas de programao que


permitem executar um pedao de cdigo vrias vezes;

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk

Microcontrolador 8051
Estrutura Bsica de um programa em Linguagem
Assembly (para o uC 8051)

Estruturas bsicas de um programa em assembly:

Pseudo-instrues:

ORG: definem um endereo de memria, onde a


instruo da linha seguinte ser alocada;
END: indica o fim de um programa;
EQU: Atribuem um valor a um rtulo. So usados
para definir constantes;
DB, DW: definem (reservam) espaos de memria
para alocar dados. So usados para definir variveis;

UTFPR / DAELN

Microcontroladores 1

Prof. Gabriel Kovalhuk