movimentação de dados · movimentação rom problemas de movimentação ... realize a soma de...

26
Microprocessadores Movimentação de Dados Rev. 02 / 2016 Prof. Henrique Aula 19

Upload: others

Post on 17-Feb-2020

5 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Microprocessadores

Movimentação de Dados

Rev. 02 / 2016 Prof. Henrique

Aul

a 19

Page 2: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Roteiro

Introdução

Movimentação RAM Interna

Movimentação RAM Externa

Movimentação ROM

Problemas de Movimentação

Referências

Aul

a 19

2

Page 3: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

IntroduçãoLinguagem Assembly

3

Page 4: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Introdução

Sempre iniciaremos qualquer programa definindo o

nome e o local do projeto, a escolha da CPU 8051 e,

em seguida, habilitando as memórias externas com a

maior capacidade possível de 65536b (dados) e 61440b

(código).

4

Page 5: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Introdução

Em seguida salve o arquivo do projeto com extensão

(.asm) com o nome escolhido por você, de tal modo

que você não se esqueça dele futuramente (boas

práticas de programação)!

5

Page 6: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Movimentação InternaIntruções

6

Page 7: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

RAM Interna

Instruções

As instruções de movimentação interna são executadas

pela instrução MOV (vide arquivo na Wiki), tal

instrução poderá realizar a movimentação de qualquer

registrador interno à RAM.

7

Page 8: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Operandos

Os registradores mais usados estão dispostos na IDE na

cor azul, dentre os quais destacam-se:

A B R0, R1, R2, R3, R4, R5, R6, R7

PSW TCON TMOD IE

IP P0, P1, P2, P3 PCON

SCON DPH DPL

SP SBUF8

RAM Interna

Page 9: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Exemplo

MOV A, P1

Origem

Destino

9

P1

A

Movimentação

Ambos devem ser internos à RAM!

RAM Interna

Page 10: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Operandos

Os registrados utilizandos como operandos devem ser

internos à RAM, caso contrário retornará um erro de

identificação do operando.

10

RAM Interna

Page 11: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Movimentação ExternaConfigurações

11

Page 12: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Memória Externa

Endereçamento

Para realizar qualquer movimentação de dados de/para

memórias externas (seja RAM ou seja ROM) deve-se

realizar primeiro seu endereçamento.

12

Page 13: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Memória Externa

Endereçamento

O ponteiro de endereçamento externo é o registrador

DPTR (16 bits). Este utiliza dois registradores de oito

bits (DPH e DPL) nesta ordem para endereçar qualquer

valor possível de memória externa (0000h a FFFFh).

13

Page 14: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Instruções

Exemplo

MOV DPTR, #0020h ; atribuição do DPTR.

14

DPTR é um registrador interno à RAM.

Deve receber um valor de 16bits.

Page 15: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Instruções

Exemplo

MOV DPTR, #0020h ; atribuição do DPTR.

15

0 0 2 00000 0000 0010 0000

DPTR

DPH DPL

Page 16: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Instruções

Exemplo

MOV DPH, A ; atribuição do DPTR.

MOV DPL, B ; atribuição do DPTR.

16

DPH e DPL devem receber valor de 8bits.

Page 17: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

RAM Externa

Dados

Para realizar a movimentação de dados de/para RAM

Externa devemos utilizar a instrução MOVX.

17

Page 18: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

RAM Externa

Para...

MOVX @DPTR, A ; movimenta o valor

;de A para a posição de

; endereço de DPTR.

18

Somente se for habilitada RAM Externa na criação do Projeto.

Page 19: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

RAM Externa

da...

MOVX A, @DPTR ; movimenta o valor

;de @DPTR para A.

19

Somente se for habilitada RAM Externa na criação do Projeto.

Page 20: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Movimentação ROMInstrução

20

Page 21: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Memória ROM

Lembrete

Não se grava na memória de código, logo somente

pode-se realizar leitura dela. Para tal utiliza-se a

instrução MOVC.

21

Page 22: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Memória ROM

Operandos

MOVC A, @DPTR ; movimenta o valor

;de @DPTR para A.

22

Deve utilizar o registrador “A” como operando de destino.

Page 23: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Problemas de MovimentaçãoLinguagem Assembly

23

Page 24: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Problemas

Movimentação

1. Movimentar P2 para @45h RAM externa.

2. Transferir o @45h RAM externa para @20h RAM

interna.

3. Copie os três primeiros bytes da ROM para os três

últimos bytes da RAM externa.

4. Armazene o resultdo da operação SP*(B - P3) na

RAM interna e na RAM externa.24

Page 25: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Problemas

Movimentação

5. Copiar os endereços de @00h até @07h da RAM

Externa para os registradores R0, R1, ... e R7.

6. Realize a soma de todas as portas (duas a duas) e

salve os resultados na memória RAM interna e externa.

7. Baseado no código anterior, eleve cada um dos

resultados ao quadrado e salve-os na memória interna.

8. Transfira os dados de @00h a 07h da RAM interna

para a posição @78h a @7Fh da RAM interna. 25

Page 26: Movimentação de Dados · Movimentação ROM Problemas de Movimentação ... Realize a soma de todas as portas (duas a duas) e salve os resultados na memória RAM interna e externa

Referências

OSMERA, Martin. MCU 8051 IDE handbook draft. 2012. Disponível em <http://www2.sorocaba.unesp.br/professor/marilza/Simulador%20MCU8051/MANUAL_MCU8051IDE.pdf>. Acesso em Ago/2016.

NICOLOSI, D. E. C. Microcontrolador 8051 detalhado. São Paulo: Érica, 2000. 221p. ISBN 9788571947214.

MANZANO, J. A. N. G. Programação ASSEMBLY padrão IBM-PC 8086/8088. São Paulo: Érica, 2013. ISBN 9788536516547.

GIMENEZ, S. P. Microcontroladores 8051. São Paulo: Prentice Hall, 2002. 270p. ISBN 8587918281.

26