Prévia do material em texto
Tutorial para uso do Simulador do Computador NEANDER
Considere o problema de determinar o maior inteiro (positivo) entre três variáveis: A, B e
C, e armazenar o resultado numa quarta variável, RES. Vamos adotar a convenção do livro
texto (WEBER, 2002) e usar os endereços de memória entre [128..255] para armazenar
dados e constantes. Sendo assim, nossa área de dados da memória do Neander ficará assim:
Figura 1 - Memória do Neander
Conforme resolvido em sala, uma possível solução para este problema está no código a
seguir:
if ((A-B)<0) {
if ((B-C)<0) RES=C
else RES=B;
}
else {
if ((A-C)<0) RES=C
else RES=A;
};
End. Instrução End Instrução
0 LDA 129; (AC=B) 22 LDA 130; (C é maior, AC=C)
2 NOT ; (complementa B) 24 JMP 37; (salta para End. 37)
3 ADD 132; (soma 1 em B) 26 LDA 130; (AC=C)
5 ADD 128; (soma com A) 28 NOT; (complementa C)
7 JN 26; (se negativo, B maior, salta para 26) 29 ADD 132; (soma 1 em C)
9 LDA 130; (AC=C) 31 ADD 129; (soma com A)
11 NOT ; (complementa C) 33 JN 22; (se negativo, C maior, salta para 22)
12 ADD 132; (soma 1 em C) 35 LDA 129; (B é maior, AC=B)
14 ADD 128; (soma com A) 37 STA 131; (RES=AC)
16 JN 22; (se negativo, C maior, salta para 22) 39 HLT; (fim)
18 LDA 128; (A é maior, AC=A)
20 JMP 37; (salta para End. 37)
O simulador apresenta a interface dividida em três partes:
Programa
Neander
Os botões indicam, respectivamente: execução direta e execução passo-a-passo.
A tabela Mneumônicos apresenta as instruções do Neander e seu código em decimal (livro
págs. 50 e 51) para auxiliar o preenchimento das instruções na tela Programa.
A seta ao lado da coluna de endereços indica o
endereço da instrução que será executada (PC). Observe
que, por padrão o programa começa no endereço 0.
No canto inferior direito há uma pequena caixa de
texto onde deverá ser inserido o código numérico em
decimal da instrução que irá ocupar o endereço apontado
pela seta verde (PC). Por exemplo, no nosso programa,
seria a instrução “LDA 129”. Logo preenche-se 32
(código da instrução LDA, livro págs. 50 e 51) e em
seguida ENTER. A seta verde irá mover-se para o
endereço 1, onde deveremos entrar com o valor “129”,
outro byte componente da instrução, em seguida ENTER.
A seta irá mover-se para o endereço 2, correspondente à
segunda instrução de nosso código.
No canto inferior esquerdo, em vermelho, há uma
caixa de texto denominada BP. Nesta caixa é permitido a
você a inserção de um endereço de memória (instrução, 0
a 127) onde ocorrerá um breakpoint durante a execução
do programa.
Nesta janela são
mostrados os valores (conteúdo)
dos registradores PC e AC, os
bitz N e Z, sob a forma de
apagado (0) e aceso (1). Na
caixa denominada “Execução” o
número de execuções e
instruções do programa
carregado é exibido. Na caixa
“Instrução” um decodificador
para as instruções mostra o
valor numérico dos 16 bits
dessa instrução (8bits+8bits) e o
seu significado no código (livro
págs. 50 e 51).
A exibição pode ser feira
em decimal [0..9] ou
hexadecimal [0..F].
Dados
O simulador permite também que um arquivo seja salvo no formato .MEM (exclusivo dele)
ou no formato texto .TXT. Porém, a abertura (carregamento) de um arquivo salvo só é
possível no formato .MEM. Ambas opções podem ser acessadas no menu Arquivo da
janela Neander.
Corresponde aos endereços de memória situados entre
[128..255] e é destinado ao preenchimento de valores nos endereços
das variáveis e das constantes do programa na área de dados da
memória do Neander.
O preenchimento é feito através da caixa de texto no canto
inferior direito da janela Dados e, na figura ao lado, mostra que o
endereço 132 foi inicializado com a constante 1, a variável A foi
inicializada com o valor 65, B com 8 e C com 200. RES não importa
valor inicial.