Buscar

Atividade Estruturada NeaderX22

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Parte 1 – Características do Processador Neander – X
Quantos bits são utilizados para representar uma instrução?
Utiliza 8 bits
Quantos bits são utilizados para representar um endereço?
Utiliza 8 bits
Como são representados os números inteiros negativos?
Os números negativos são representados como Flag N (negativo) em complemento de 2. Se valer 1, o inteiro é negativo, se valer 0, o inteiro é positivo.
Quantas instruções podem existir?
Em 8 bits podem ser representadas até 256 instruções. O Neander-X tem 10 instruções e uma 11ª que representa “nenhuma operação”.
Qual o tamanho máximo de memória endereçável?
256 posições (palavras de 8 bits) e apenas endereçamento direto.
Quais são os registradores disponíveis?
1 acumulador de 8 bits (AC), 1 apontador de programa de 8 bits (PC), 1 registrador de estado com 2 códigos de condição: negativo (N) e zero (Z), o REM, que é o registrador de endereços da memória e o RDM, que é o registrador de dados da memória.
Qual o formato de uma instrução?
8 bits para código da operação e os 8 bits seguintes para o operando. Há Instruções que ocupam apenas 1 byte (NOP, NOT) e instruções que usam 2 bytes (STA, LDA, ADD, OR, AND, JMP, JN, JZ). 
Parte 2 – Utilizando o SIMULADOR Neander – X
2.1.1 Abrir o computador
Tem a função de inicializar o computador, possibilitando ao usuário a interação com os demais recursos oferecidos pelo sistema. Através desta funcionalidade podem ser executados outros recursos do sistema, que são: 
• Carregar Interface: Tem a função de carregar a interface principal do simulador, área de interação com o usuário, na qual é carregada na tela o painel Programa e o painel Computador, ambos explicados na sequência do artigo. 
• Fechar Computador: Este tem a funcionalidade de fechar a principal interface do sistema, fechar o painel Programa e o painel Computador. Salienta-se que, para este caso de uso ser executado, a interface deve estar carregada.
2.1.2 Executando o Programa 
Esta funcionalidade que foi generalizada em outros dois casos de uso. Seu objetivo é definir a funcionalidade de executar um programa no simulador. A definição das funcionalidades dos casos de uso associados a Executar Programa são definidos a seguir: 
• Execução Completa: Trata-se de uma generalização do caso de uso anterior, “Executar Programa”, e define a execução total de um programa previamente carregado na memória. 
• Execução Passo a Passo: Também trata-se de uma generalização do caso de uso “Executar Programa”, e define uma forma distinta de execução. Desta forma é executada uma instrução de cada vez. 
• Invocar Próxima Instrução: É uma funcionalidade executada a partir da execução do caso de uso anterior, “Execução Passo a Passo”. Define que quando iniciada a execução passo a passo o usuário precisa chamar a função “Invocar Próxima Instrução”, para que uma nova instrução seja executada. 
• Pausar Execução: Tem a funcionalidade de pausar a execução de um programa que esteja sendo executado no simulador. Somente pode ser chamado se anteriormente o caso de uso “Executar Programa” tiver sido executado. 
• Reiniciar Execução: Esta funcionalidade é executada a partir da execução do caso de uso “Pausar Execução”. Sua função é fazer o simulador retomar o processamento e a execução de um programa, caso o mesmo tenha sido pausado. 
• Encerrar Execução: Tem a funcionalidade de abortar a execução de um programa. Somente pode ser chamado se anteriormente o caso de uso “Executar Programa” tiver sido executado.
2.1.3 Conjunto de Instruções 
O software desenvolvido implementa um simulador do funcionamento interno de um computador, para tal funcionalidade, fica definida uma gama de instruções que podem ser utilizadas para criação e elaboração dos programas. Este tópico do artigo descreve as instruções que fazem parte do escopo desse sistema, que podem ser do tipo: Movimentação (MO), Lógicas e Aritméticas (LA), Desvio (DV) e Outras (OU). O Quadro a seguir apresenta a descrição e a definição das instruções e sua codificação.
Instruções integrantes do Software
2.2 Programa que execute a soma de duas variáveis de 8 bits representadas em complemento a dois, considerando as posições (em decimal) a seguir:
Início do programa:                       0
Início da área de dados:                128
Posição da 1ª variável:                  128
Posição da 2ª variável:                  129
Posição do resultado:                    130
 
Para utilizarmos uma operação de adição, necessitamos usar o comando “ADD”, que soma os dois argumentos que estão nas posições 128 e 129. Porém podemos identificar que o comando “ADD” possui apenas 1 argumento, sendo assim o Neander irá somar o conteúdo do argumento fornecido com o valor que está no acumulador. Por isto precisamos carregar um dos valores para acumular e posteriormente realizar a operação “ADD”. 
Para carregar para o acumulador o primeiro argumento que estará na posição 128 da memória, vamos utilizar o comando “LDA” e fornecer o valor 128 como argumento. Isto significa que o conteúdo de memória da posição 128 será carregado para o acumulador. Então para executar o comando “LDA” devemos usar o número 32, e logo em seguida devemos informar o endereço de memória que deve ser carregado para o acumulador, no caso 128.
Após o primeiro argumento já armazenado no acumulador, vamos utilizar o comando “ADD” e fornecer como argumento o valor 129 a fim de fazer a soma com o valor que já está armazenado no acumulador. Neste ponto, o programa irá somar os dois argumentos e o resultado estará no acumulador. Então para realizar a operação de adição, devemos utilizar o número 48 e logo no endereço seguinte, fornecer o endereço de memória que deverá ser adicionado, no caso 129. 
O passo final será armazenar o conteúdo do acumulador na posição 130 de memória, para isto devemos utilizar o comando “STA” e fornecer como argumento o endereço de memória onde o resultado será armazenado, no caso 130.
Realizadas todas as operações, utilizamos o comando “HLT” para encerrar o programa, sendo assim ele não será executado continuamente.
Tela do computador
Parte 3 - Comparação entre os simuladores Neanderwin e K&S. 
O software de simulação funcional de um computador K&S, foi desenvolvido por William Grant Braught, Ph D. em Ciência da Computação, professor e membro de departamento de Matemática e Ciência da Computação do Dickinson College, em Carlisle no estado da Pennsylvania, Estados Unidos. O software foi desenvolvido no ano de 2001. Seu código é aberto e liberado sob os termos GNU CopyLeft5. Seu desenvolvimento foi feito com a integração das linguagens HTML e Java Script (http://users.dickinson.edu/~braught/). O K&S foi um dos principais projetos desenvolvidos por Grant, cujo objetivo principal foi criar uma aplicação para auxiliar no ensino de Organização de Computadores e introdução em Ciência da Computação, assim como define o autor. O software é constituído de quatro módulos distintos, são eles: simulador do caminho de dados, simulador do caminho de dados com a memória principal, simulador com microprogramação e simulador completo do computador – CPU e memória. A Figura a seguir mostra a interface do software, sendo ilustrada a interface do K&S no modo simulador completo do computador – CPU e memória principal.
O Neander foi desenvolvido por docentes da UFRGS – Universidade Federal do Rio Grande do Sul. A versão inicial do software foi desenvolvida no ano de 1990 pelos professores da instituição Dr. Raul Fernando Weber e Dra. Taisy Silva Weber. Segundo Weber (2001, p. 49). O nome Neander lhe foi atribuído fazendo uma analogia ao homem de Neanderthal, o antecessor do Homo Sapiens, já que se tratava de um software simulador muito simples. O Neander serviu como base para criação de alguns outros software com o mesmo objetivo, mas com capacidades e recursos mais avançados.
Computador Hipotético Neader – Versão Gráfica
Interface simulador K&S (modo completo)
Quanto às limitações analisadas nos simuladores existentes e o que se deseja que o sistema proposto atenda, verificamos que as ferramentas apresentadas, Neander e K&S, simulam de uma forma correta o funcionamento do hardware (parte física) e a interação entre os dispositivos. 
O problema está na forma de como é apresentada a simulação e nas funcionalidades oferecidas, sendo o K&S um simulador gráfico que funciona de forma correta, mas possui duas deficiências significativas: a sua interface, que se distância um pouco da forma conceitual do hardware do computador e o modo como são apresentados os dispositivos, pois encontramos pouca semelhança com o hardware. 
Outro aspecto importante é que os programas criados no K&S para execução, não podem ser salvos, pois o software não disponibiliza essa funcionalidade. Analisando didaticamente é um aspecto crítico para sua utilização o que prejudica futuras revisões, diferente do Neander pelo qual os programas inseridos no sistema poderão ser salvos.
Sobre o Neander podemos compartilhar quanto à forma gráfica as mesmas considerações feitas ao K&S, mas tratando-se de layout do hardware do computador, o simulador Neander apresenta menos informações que o K&S. 
Fontes:
http://www.ppgee.pucminas.br/weac/2006/PDF/WEAC-2006-Artigo-05.pdf
http://equipe.nce.ufrj.br/gabriel/estacio/MaquinaNeander.pdf
http://www.ulbra.inf.br/joomla/images/documentos/TCCs/2011_01/TCCII_CC_FrancisSherer
http://users.dickinson.edu/~braught/kands/kands.html

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Outros materiais