Buscar

mc404-6-revisao-do-lab05

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 11 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Organização Básica de 
computadores e linguagem de 
montagem
1o Semestre de 2011
Prof. Edson Borin
Aula 9
Revisão das diretivas do montador
• As diretivas do montador nos permite especificar 
para o montador como queremos programar o 
microcontrolador.
• Por exemplo, com as diretivas .CSEG, .DSEG, .ESEG 
e .ORG podemos informar ao montador onde 
colocar os dados ou as instruções.
Diretivas do Montador
<= reservar um (ou múltiplos) bytes
AVR Assembler User Guide
Development Tools User Guide 4-9
The Assembler is not case sensitive. 
The operands have the following forms:
Rd: R0-R31 or R16-R31 (depending on instruction)
Rr: R0-R31 
b: Constant (0-7), can be a constant expression
s: Constant (0-7), can be a constant expression
P: Constant (0-31/63), can be a constant expression
K: Constant (0-255), can be a constant expression
k: Constant, value range depending on instruction. 
Can be a constant expression.
q: Constant (0-63), can be a constant expression
4.5 Assembler 
directives
The Assembler supports a number of directives. The directives are not translated
directly into opcodes. Instead, they are used to adjust the location of the program in
memory, define macros, initialize memory and so on. An overview of the directives is
given in the following table. 
Summary of directives:
Note: All directives must be preceded by a period.
Directive Description
BYTE Reserve byte to a variable
CSEG Code Segment
DB Define constant byte(s) 
DEF Define a symbolic name on a register
DEVICE Define which device to assemble for
DSEG Data Segment
DW Define constant word(s)
ENDMACRO End macro
EQU Set a symbol equal to an expression
ESEG EEPROM Segment
EXIT Exit from file
INCLUDE Read source from another file
LIST Turn listfile generation on
LISTMAC Turn macro expansion on
MACRO Begin macro
NOLIST Turn listfile generation off
ORG Set program origin
SET Set a symbol to an expression
Diretivas do Montador
<= mudar para memória de programa
<= mudar para memória de dados
<= mudar para memória EEPROM
<= escrever um byte
<= escrever uma palavra
<= finalizar a macro
<= iniciar uma macro
<= iniciar/retomar a inclusão do programa no arquivo LST
<= parar a inclusão do programa no arquivo LST
<= ajustar o ponto de inserção de dados (código, bytes, ...) na mem.
<= renomear registradores
<= definir constantes
<= incluir outros arquivos
<= definir constantes
Organização do AVR ATmega88
ATmega88
AVR CPU
E/S
PortB, ...
0
1
2
3
4
FLASH SRAM EEPROM
16 bits 8 bits 8 bits
0
1
2
3
4
0
1
2
3
4
... ... ...
Diretivas do Montador
0
1
2
3
4
FLASH SRAM EEPROM
16 bits 8 bits 8 bits
0
1
2
3
4
0
1
2
3
4
... ... ...
.CSEG
.ORG 0x0000
rjmp MAIN ; Interrupção de Reset (Salta para a subrotina MAIN).
.CSEG
; Vetor 1 (Na memória de programa)
vetor1:
.dw 0x0014, 0x1234, 0xff51, 0x2d3e, 0x0121, 0x0aef, 0xb8a9
.dw 0x1029, 0x0137, 0xb7ba, 0x52d3, 0xf712, 0x909c, 0xabcd
.dw 0x1e7e, 0x1a92, 0xac9b, 0x99ef, 0x1028, 0x29aa, 0x23ac
vetor1_fim:
.ESEG
.ORG 0x0001
.db 0x12, 0x14
.dw 0xabcd
vetor_aux:
.BYTE 200
vetor_aux_fim:
Diretivas do Montador
0
1
2
3
4
FLASH SRAM EEPROM
16 bits 8 bits 8 bits
0
1
2
3
4
0
1
2
3
4
... ... ...
rjmp MAIN
.CSEG
.ORG 0x0000
rjmp MAIN ; Interrupção de Reset (Salta para a subrotina MAIN).
.CSEG
; Vetor 1 (Na memória de programa)
vetor1:
.dw 0x0014, 0x1234, 0xff51, 0x2d3e, 0x0121, 0x0aef, 0xb8a9
.dw 0x1029, 0x0137, 0xb7ba, 0x52d3, 0xf712, 0x909c, 0xabcd
.dw 0x1e7e, 0x1a92, 0xac9b, 0x99ef, 0x1028, 0x29aa, 0x23ac
vetor1_fim:
.ESEG
.ORG 0x0001
.db 0x12, 0x14
.dw 0xabcd
vetor_aux:
.BYTE 200
vetor_aux_fim:
Estamos dizendo ao montador para 
escrever na memória de programa 
(.CSEG), a partir do endereço 0x0000 
(.ORG 0x0000) a instrução rjmp MAIN
Diretivas do Montador
0
1
2
3
4
FLASH SRAM EEPROM
16 bits 8 bits 8 bits
0
1
2
3
4
0
1
2
3
4
... ... ...
rjmp MAIN
0x14 0x00
0x34 0x12
0x51 0xff
0x3e 0x2d
.CSEG
.ORG 0x0000
rjmp MAIN ; Interrupção de Reset (Salta para a subrotina MAIN).
.CSEG
; Vetor 1 (Na memória de programa)
vetor1:
.dw 0x0014, 0x1234, 0xff51, 0x2d3e, 0x0121, 0x0aef, 0xb8a9
.dw 0x1029, 0x0137, 0xb7ba, 0x52d3, 0xf712, 0x909c, 0xabcd
.dw 0x1e7e, 0x1a92, 0xac9b, 0x99ef, 0x1028, 0x29aa, 0x23ac
vetor1_fim:
.ESEG
.ORG 0x0001
.db 0x12, 0x14
.dw 0xabcd
vetor_aux:
.BYTE 200
vetor_aux_fim:
Estamos dizendo ao montador para 
escrever na memória de programa 
(.CSEG) os dados 0x0014, ... 0x23ac.
Como já estávamos em .CSEG antes, 
este comando .CSEG é redundante.
Diretivas do Montador
0
1
2
3
4
FLASH SRAM EEPROM
16 bits 8 bits 8 bits
0
1
2
3
4
0
1
2
3
4
... ... ...
rjmp MAIN
0x14 0x00
0x34 0x12
0x51 0xff
0x3e 0x2d
0x12
0x14
0xcd
0xab
.CSEG
.ORG 0x0000
rjmp MAIN ; Interrupção de Reset (Salta para a subrotina MAIN).
.CSEG
; Vetor 1 (Na memória de programa)
vetor1:
.dw 0x0014, 0x1234, 0xff51, 0x2d3e, 0x0121, 0x0aef, 0xb8a9
.dw 0x1029, 0x0137, 0xb7ba, 0x52d3, 0xf712, 0x909c, 0xabcd
.dw 0x1e7e, 0x1a92, 0xac9b, 0x99ef, 0x1028, 0x29aa, 0x23ac
vetor1_fim:
.ESEG
.ORG 0x0001
.db 0x12, 0x14
.dw 0xabcd
vetor_aux:
.BYTE 200
vetor_aux_fim:
Estamos dizendo ao montador para 
escrever na memória EEPROM 
(.ESEG), a partir do endereço 0x0001 
(.ORG), os bytes 0x12, 0x14 e a palavra 
0xabcd.
Diretivas do Montador
0
1
2
3
4
FLASH SRAM EEPROM
16 bits 8 bits 8 bits
0
1
2
3
4
0
1
2
3
4
... ... ...
rjmp MAIN
0x14 0x00
0x34 0x12
0x51 0xff
0x3e 0x2d
0x12
0x14
0xcd
0xab
.CSEG
.ORG 0x0000
rjmp MAIN ; Interrupção de Reset (Salta para a subrotina MAIN).
.CSEG
; Vetor 1 (Na memória de programa)
vetor1:
.dw 0x0014, 0x1234, 0xff51, 0x2d3e, 0x0121, 0x0aef, 0xb8a9
.dw 0x1029, 0x0137, 0xb7ba, 0x52d3, 0xf712, 0x909c, 0xabcd
.dw 0x1e7e, 0x1a92, 0xac9b, 0x99ef, 0x1028, 0x29aa, 0x23ac
vetor1_fim:
.ESEG
.ORG 0x0001
.db 0x12, 0x14
.dw 0xabcd
vetor_aux:
.BYTE 200
vetor_aux_fim:
Qual é o valor dos labels 
vetor1, vetor1_fim vetor_aux 
e vetor_aux_fim?
• Exercícios:
–Implemente o programa anterior no AVR Studio e 
gere o arquivo “.lst”.
–Verifique o endereço dos labels e os dados nas 
memórias de programa e EEPROM após a 
montagem.
–Utilize as diretivas do montador para escrever 
outros dados nas memórias.
Diretivas do Montador

Outros materiais