Baixe o app para aproveitar ainda mais
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.
Compartilhar