NEANDERWIN
Tese: NEANDERWIN. Pesquise 862.000+ trabalhos acadêmicosPor: tiogenes • 29/5/2014 • Tese • 2.238 Palavras (9 Páginas) • 382 Visualizações
NEANDERWIN
O NeanderWin é um simulador da máquina Neander, definida no livro do Raul F. Weber
(UFRGS), Fundamentos de Arquitetura de Computadores, Ed. Sagra Luzzatto. A máquina
original foi estendida aqui para incluir algumas instruções para carga de dados imediatos
no acumulador e operações de entrada e saída de dados para dois dispositivos
mapeados em nosso simulador: um teclado e um visor.
Algumas características do processador Neander são:
Largura de dados e endereços de 8 bits
Dados representados em complemento a dois
1 acumulador de 8 bits (AC)
1 apontador de instruções de 8 bits (PC)
1 registrador de código de condição com 2 bits: negativo (N) e zero (Z)
O NEANDER só possui um modo de endereçamento: o modo direto (muitas vezes
também chamado de absoluto). No modo de endereçamento direto (Figura 4.1), a palavra
que segue o código da instrução contém, nas instruções de manipulação de dados, o
endereço de memória do operando. Nas instruções de desvio, esse endereço
corresponde à posição de memória onde está a próxima instrução a ser executada.
O NEANDERWIN foi estendido para ter mais dois modos de endereçamento: imediato e
indireto. Maiores detalhes serão mostrados mais adiante.
1) Listagem geral das instruções
As instruções podem ter um ou dois bytes. Nas instruções com apenas um byte, os 4 bits
mais significativos contém o código da operação. Nas instruções com dois bytes, que no
Neander são aquelas que fazem referência a um operando na memória, o segundo byte
contém o endereço de memória deste operando.
7 4 3 0
Código Não utilizados
endereço direto
Nota:
Os 4 bits de mais baixa ordem do primeiro byte são reservados para futuras expansões.
Existem também dois códigos que não têm instruções associadas.
'NOP' código 0
O comando NOP é usado apenas para gastar tempo.
'STA ender' código 1
O comando STA guarda o acumulador na posição de memória indicada pelo
operando ender.
1
'LDA ender' código 2
O comando LDA atribui ao acumulador o conteúdo da posição de memória indicada
pelo operando ender.
'ADD ender' código 3
O comando ADD soma ao acumulador o conteúdo de uma posição de memória
indicada pelo operando ender.
'OR ender' código 4
O comando OR realiza um "ou" lógico entre o acumulador e o conteúdo de uma
posição de memória indicada pelo operando ender.
'AND ender' código 5
O comando AND realiza um "e" lógico entre o acumulador e o conteúdo de uma
posição de memória indicada pelo operando ender.
'NOT' código 6
O comando NOT inverte os bits do acumulador.
'JMP ender' código 8
O comando JMP (jump) desvia a execução do programa para o endereço indicado
pelo operando ender.
'JN ender' código 9
O comando JN (jump if negative) desvia a execução do programa para o endereço
indicado pelo operando ender, apenas quando a última operação realizada produziu um
valor com o bit 7 ligado (negativo).
'JZ ender' código 10
O comando JZ (jump if zero) desvia a execução do programa para o endereço
indicado pelo operando ender, apenas quando a última operação realizada produziu um
valor zero.
'JNZ ender' código 11
O comando JNZ (jump if not zero) desvia a execução do programa para o endereço
indicado pelo operando ender, apenas quando a última operação realizada produziu um
valor diferente de zero.
'IN ender' código 12
O comando IN (input) traz para o acumulador o valor lido num dispositivo externo
indicado pelo operando ender. No Neanderwin os dispositivos são: chaves (endereço 0) e
o status de "dado disponível" das chaves (endereço 1).
'OUT ender' código 13
O comando OUT (output) descarrega o conteúdo do acumulador em um dispositivo
externo indicado pelo operando ender. No Neanderwin o único dispositivo disponível é
um visor (endereço 0).
'LDI imed' código 14
2
O comando LDI (load immediate) carrega no acumulador o valor dado pelo operando
imed.
'HLT'
...