As instruções de transferência de dados no microcontrolador 8051 movem os dados entre diferentes locais de memória na arquitetura do 8051. Esses locais incluem:
*
RAM interna: A RAM interna do 8051 (128 bytes).
*
Registros de função especial (SFRS): Registros usados para controlar vários aspectos da operação do 8051 (por exemplo, temporizadores, porta serial, interrupções).
*
RAM externa: Acessado através do barramento de endereço do 8051 (se a RAM externa estiver conectada). (Nota:o acesso à RAM externa geralmente requer sequências de instruções mais complexas.)
As instruções primárias de transferência de dados são:
*
mov (move): Esta é a instrução de transferência de dados mais fundamental. Ele copia o conteúdo de um local (fonte) para outro local (destino).
*
Sintaxe: `MOV Destination, Source`
*
Exemplos: * `Mov a, r0`:move o conteúdo do registro R0 para o acumulador (a).
* `Mov r1, #55h`:move o valor imediato 55h (hexadecimal) para o registro R1.
* `Mov r2, @a`:move os dados no endereço de memória apontado pelo acumulador (a) no registro r2. (Endereço indireto)
* `Mov @a+dptr, r3`:move o conteúdo de R3 para a RAM externa no endereço calculado pela adição dos registros do acumulador (a) e do ponteiro de dados (DPTR). Isso ilustra como a RAM externa pode ser acessada indiretamente.
*
MOVX (mover externo): Esta instrução move especificamente os dados entre o acumulador (a) e a RAM externa. Ele usa o registro DPTR (Data Pointer) para abordar a memória externa.
*
Sintaxe: `Movx a, @a+dptr` (move os dados da RAM externa para a) ou` movx @a+dptr, a` (move dados de A para RAM externa)
*
empurrar e pop: Essas instruções funcionam com a pilha, uma estrutura de dados LIFO (última entrada, primeira saída) geralmente localizada na RAM interna.
*
Push: Empurra o conteúdo do acumulador (a) na pilha.
*
pop: Coloca o elemento superior da pilha para o acumulador (a). O ponteiro da pilha (SP) é atualizado automaticamente.
*
xch (Exchange): Troca o conteúdo do acumulador (a) com o conteúdo de um registro especificado ou local de memória.
*
Sintaxe: `Xch a, ri` (onde o ri é um registro r0-r7) ou` xch a, @a` (endereçamento indireto)
Modos de endereçamento: 8051 As instruções utilizam diferentes modos de endereçamento, incluindo:
*
Endereço imediato: O operando é um valor constante incluído diretamente na instrução. (`Mov r1, #55h`)
*
Registre o endereço: O operando é um registro. (`Mov a, r0`)
*
Endereço direto: O operando é um local de memória especificado diretamente por seu endereço na RAM interna. (por exemplo, `mov a, 20h` acessa o endereço interno da RAM 20H).
*
Endereço indireto: O endereço do operando é armazenado em um registro (geralmente o acumulador A ou o DPTR). (`Mov a, @a`;` movx a, @a+dptr`)
Essas instruções são a base para a manipulação de dados no 8051. Compreendendo sua sintaxe, abordagem de modos e os papéis de registros como o acumulador e o DPTR são cruciais para a programação 8051 eficaz.