sábado, 22 de abril de 2017

Microcontroladores: Movimentação de dados em linguagem Assembly para 8051

O microcontrolador 8051 possui instruções que permitem copiar o conteúdo de um registrador ou endereço de memória para outro registrador ou posição de memória. Essas instruções também permitem atribuir valores para estes endereços de memória ou registradores seja como condições iniciais do programa que será desenvolvido como também para operações que serão realizadas ao longo deste. 

Para que uma informação possa ser "movimentada" utiliza-se a instrução MOV que possui o seguinte formato. 

  • MOV destino,origem
Exemplo: MOV A,R5 que copia o conteúdo do registrador R5 no registrador A. 


Existem 3 formas básicas de movimentação. São elas o modo imediato, direto e indireto

  • Modo Imediato

MOV A,#3h ; grava o valor 3h (3 em hexadecimal) no registrador A. A "grade" indica que esse é um valor imediato que está sendo atribuído

  • Modo Direto
MOV A,3h ; 3h agora é um endereço de memória, já que não está precedido de #. Essa instrução irá copiar o conteúdo do endereço 3h e gravar no registrador A. 
  • Modo Indireto
MOV A,@R0 ; O símbolo @ indica que é um modo indireto. Significa que o valor contido em R0 será considerado um endereço de memória e o conteúdo deste endereço é que será gravado no registrador A. 

É importante salientar que o modo indireto deve ser utilizado apenas com os registradores R0 e R1. 


Abaixo segue um vídeo que gravei simulando no software MCU8051 IDE os modos de endereçamento aqui apresentados. O vídeo contém algumas falhas devido a primeira experiência mas espero que seja de bom proveito.