×
Arquitetura de Von Neumann
História e Importância
A arquitetura de Von Neumann, proposta por John von Neumann na década de 1940, é a base para a maioria dos computadores modernos.
Essa arquitetura organiza o computador em três componentes principais: Unidade Central de Processamento (CPU), memória e dispositivos de entrada/saída.
A principal inovação foi o uso de uma memória única para armazenar dados e instruções, permitindo a execução sequencial de programas.
Sua importância reside na simplicidade e flexibilidade, permitindo a criação de programas complexos que podem ser facilmente armazenados, modificados e executados.
Componentes Principais
- Unidade de Controle: Gerencia a execução das instruções e coordena o funcionamento de outros componentes.
- Unidade Lógica e Aritmética (ULA): Realiza operações matemáticas e lógicas.
- Memória: Armazena instruções e dados de forma unificada.
- Registradores: Pequenos espaços de armazenamento rápido dentro da CPU.
Instruções Implementadas
Abaixo estão as instruções disponíveis na simulação e exemplos de uso:
1. LOAD
Carrega o valor de um endereço de memória em um registrador.
LOAD eax, 20
Exemplo: Carrega o valor armazenado na posição 20 da memória para o registrador eax.
2. STORE
Armazena o valor de um registrador em um endereço de memória.
STORE eax, 30
Exemplo: Armazena o valor do registrador eax na posição 30 da memória.
3. ADD
Adiciona o valor de um endereço de memória ao registrador.
ADD eax, 21
Exemplo: Soma o valor na posição 21 da memória ao valor atual de eax.
4. SUB
Subtrai o valor de um endereço de memória do registrador.
SUB eax, 22
Exemplo: Subtrai o valor na posição 22 da memória do registrador eax.
5. MUL
Multiplica o valor de um endereço de memória pelo registrador.
MUL eax, 23
Exemplo: Multiplica o valor de eax pelo valor armazenado na posição 23 da memória.
6. DIV
Divide o registrador pelo valor de um endereço de memória.
DIV eax, 24
Exemplo: Divide o valor de eax pelo valor armazenado na posição 24 da memória.
7. POW
Eleva o valor de um registrador a uma potência.
POW eax, 2
Exemplo: Eleva o valor de eax ao quadrado.
8. LOG
Calcula o logaritmo de base 10 do valor em um registrador.
LOG eax
Exemplo: Substitui o valor de eax pelo logaritmo de base 10 de seu valor atual.
9. SIN, COS, TAN
Calcula o seno, cosseno ou tangente de um ângulo armazenado em radianos.
SIN eax
Exemplo: Calcula o seno do valor armazenado em eax.
10. AND
Realiza uma operação lógica E entre o acumulador e o valor na memória.
AND 20
Exemplo: O acumulador passa a ser o resultado de AC & mem[20].
11. OR
Realiza uma operação lógica OU entre o acumulador e o valor na memória.
OR 21
Exemplo: O acumulador passa a ser o resultado de AC | mem[21].
12. NOT
Inverte todos os bits do acumulador.
NOT
Exemplo: O acumulador passa a ser o complemento de seu valor atual.
13. HALT
Finaliza a execução do programa.
HALT
Exemplo: Interrompe o processamento de instruções.
14. IN e OUT
IN recebe entrada do usuário; OUT exibe saída do registrador.
IN eax
OUT eax
Exemplo: Solicita ao usuário um valor para eax e, em seguida, exibe o valor de eax.
15. JUMP e JMPZ
JUMP desvia para uma instrução específica; JMPZ desvia se o acumulador for zero.
JUMP 10
JMPZ 15
Exemplo: Desvia para a instrução na posição 10 ou, no caso de JMPZ, apenas se o acumulador for zero.
16. CALL e RET
Controla sub-rotinas; CALL executa uma sub-rotina e RET retorna dela.
CALL 20
RET
Exemplo: Salta para a posição 20 na memória e, ao encontrar RET, retorna para a próxima instrução após o CALL.
17. NOP
Não faz nada e avança para a próxima instrução.
NOP
Exemplo: Usado para sincronização ou espaço reservado no programa.
18. PIXEL
Controla o estado de um pixel na tela gráfica, permitindo ligá-lo ou desligá-lo.
PIXEL x, y, value
Exemplo:
PIXEL 3, 3, 1 ; Liga o pixel na posição (10, 10).
PIXEL 7, 7, 0 ; Desliga o pixel na posição (20, 20).
Os valores de x e y devem estar dentro dos limites da tela, e value pode ser 1 (ligado) ou 0 (desligado).
19. CLS
Limpa a tela gráfica, apagando todos os pixels (tornando-os apagados/brancos).
CLS
Exemplo:
CLS
Após executar este comando, todos os pixels na tela gráfica serão desligados.
20. MOV
Mover o valor de um registrador de origem para outro registrador de destino.
MOV ebx, eax
Exemplo: Move o valor de eax para o registrador ebx.