h3: Organização da Memória e ALU no 8051
Classificado em Computação
Escrito em em português com um tamanho de 4,14 KB.
1.2. Organização da Memória Nos processadores da família do 8051, as memórias de programa e de dados são fisicamente separadas; tanto os dados como os programas podem ser memorizados internamente, ou em dispositivos de memória externa. Para viabilizar a identificação das posições de memória externa (de programa e de dados) que são acedidas, durante a execução das instruções, o microprocessador gera impulsos na linha ALE - Address Latch Enable - e controla o estado da saída PSEN - Program Store Enable -, como adiante se descreve.
1.2.1. A Memória de Programa Nos sistemas baseados em processadores da família do 8051, a seleção da memória de programa (interna e/ou externa) é feita pelo projetista de hardware. O microprocessador acede exclusivamente à memória externa, se a sua entrada \EA - External Access enable - for ligada à massa; se esta entrada for colocada no estado high (ligada a Vcc), o microprocessador utiliza a sua memória interna, para endereços baixos e a memória externa, para endereços altos.
1.2.2. A Memória de Dados Nos processadores da família em estudo, existe um bloco de memória de dados, de leitura e escrita (do tipo RAM), organizado em palavras de oito bits. No 8051, estão disponíveis 128 registos (128x8bit) que são acedidos através dos endereços 00H a 7FH; nos endereços 10H a FFH, incluem-se registos de memória que, nas versões mais "baixas" (8xX1), estão reservados (não são usados) e, ainda, os registos de funções especiais.
As memórias de dados interna e externa podem ser usadas num mesmo programa, pois são acedidas mediante a execução de instruções distintas; a execução de instruções do tipo MOV
, provoca a transferência de dados entre registos de RAM interna e/ou registos de funções especiais; o acesso à memória de dados externa é feito mediante a execução de instruções cujo formato é MOVX
; também é possível transferir palavras de dados da memória de programa para o processador, mediante a execução de instruções cuja mnemónica é MOVC
.
Na memória interna, destaca-se a existência de um conjunto de 32 registos que estão organizados em quatro bancos; em cada um dos bancos (0 a 3), os registos são identificados por R0 a R7; também é possível escrever (e ler) o conteúdo destes registos mediante a execução de instruções do tipo MOV Rn, A
ou MOV Rn, #byte
(e MOV A, Rn
), com n = 0, 1, ... , 7. Os bancos são selecionados com recurso a dois bits, RS0 e RS1. Os registos cujos endereços assumem valores compreendidos entre 20H e 2FH também podem ser acedidos bit a bit, mediante a execução de instruções do tipo SETB bit
, CLR bit
, MOV C, bit
e MOV bit, C
; C designa a Carry flag e bit é o endereço selecionado em RAM.
Na Unidade Lógica e Aritmética (ULA ou ALU), efetuam-se operações aritméticas (adição, subtração, multiplicação e divisão inteira) e lógicas (AND, OR, XOR e NOT). A ALU opera sobre palavras de dados, de oito bits, afetando, em alguns casos, o estado de um conjunto de flags, no registo PSW. No caso das operações de uso mais frequente, nas quais estão envolvidos dois operandos, o acumulador é usado para registar um dos operandos e, depois de executada a instrução, o resultado da operação. Contrariamente ao que sucede na maioria dos processadores de oito bits, a ALU pode realizar operações de multiplicação e divisão inteira, executando apenas uma instrução. No caso da multiplicação, um dos operandos é escrito no acumulador e o outro no registo B; o resultado da operação, obtido quando se executa a instrução MUL AB
, é depositado nos mesmos registos, ficando o byte de maior peso em B, e o de menor peso no acumulador. Quando se executa a instrução DIV AB
, a parte inteira do quociente que resulta da divisão do conteúdo do acumulador pelo do registo B é registada no acumulador; o resto da divisão é apresentado no registo B.