Buscar

TCCII_CC_FrancisSherer

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 3, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 6, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você viu 9, do total de 25 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Prévia do material em texto

1 
DESENVOLVIMENTO DE SOFTWARE PARA 
SIMULAÇÃO DE UM COMPUTADOR SIMPLES 
BASEADO NA ARQUITETURA VON NEUMANN1 
Francis Ribeiro Scherer <francis.scherer@gmail.com> 
Adriano Zanuz2 <adriano.zanuz@gmail.com> - Orientador 
 
Universidade Luterana do Brasil (Ulbra) – Curso de Ciência da Computação – Câmpus Canoas 
Av. Farroupilha, 8001 – Bairro São José – CEP 92425-900 – Canoas – RS 
 
22 de junho de 2011 
RESUMO 
Este trabalho apresenta o desenvolvimento de um software para simulação do funcionamento interno de um 
computador simples. Este simulador, denominado SVN – Simulador Von Neumann, servirá de auxílio didático para 
os cursos das áreas de engenharia e computação no ensino sobre a arquitetura e a organização de computadores. O 
trabalho inicia pela conceituação teórica referente ao tema proposto, e, após, aborda o desenvolvimento do sistema, 
sua arquitetura, características, recursos e funcionalidades. A estrutura desse computador é baseada na arquitetura de 
von Neumann. São abordados aspectos referentes ao modelo da arquitetura definida por Neumann, sua estrutura e 
funcionamento. São também expostos os modelos desenvolvidos durante a etapa de projeto do sistema, através de 
diagramas da UML, nos quais fica caracterizada sua estrutura, bem como suas funcionalidades. Após, são 
documentados itens referentes ao funcionamento e à utilização do sistema por parte dos usuários, como a sua 
linguagem própria para a criação de programas, seu conjunto de instruções e sua interface. Também é exposta uma 
avaliação do sistema, realizada diretamente com o público alvo de utilização. Para concluir, são feitas as 
considerações finais do trabalho e discutidas as possibilidades de expansão do sistema, indicando alguns pontos para 
evolução. 
Palavras-chave: Arquitetura e Organização de Computadores; Modelo de von Neumann; Simulação. 
ABSTRACT 
Title: “Development of a software for simulation of a simple computer based on von Neumann architecture” 
This paper presents the development of a software that simulates the internal operation of a simple computer. 
This simulator will serve as a teaching aid for engineering and science computing courses when teaching about the 
computer architecture and organization. The work begins with the theoretical conceptualization, referring to the 
proposed theme, and, after, discusses the system development, its architecture, features, capabilities and 
functionalities. The structure of this computer is based on the von Neumann architecture. It covers topics related to 
the model of the architecture defined by Neumann, its structure and functioning. Models developed during the stage 
of system design are also exposed through UML diagrams, where are characterized their structure, as well as their 
facilities. After, items related to the the operation and use of the system by the users are documented, such as its own 
language for programs creation, its instruction set and its interface. An evaluation of the system is also exposed, 
carried out directly with the target audience of use. Finally, concluding remarks of the work are made and 
possibilities of expansion of the system are discussed, indicating some points for evolution. 
Key-words: Computer Architecture; von Neumann model; Simulation. 
1 INTRODUÇÃO 
Durante a graduação nos cursos da área de Computação, e também alguns de Engenharia, existem 
disciplinas com diferentes conteúdos e abordagens, tratando dos mais variados tópicos a respeito do estudo 
de computadores. Nestas disciplinas são estudados conceitos desde os referentes ao funcionamento básico 
das máquinas até os computadores e sistemas complexos existentes hoje em dia. Uma das áreas de estudo diz 
respeito à arquitetura e à organização de computadores, que é o tema central deste artigo. 
A área de arquitetura e organização de computadores abrange os conceitos no nível do hardware da 
máquina e do software de baixo nível. Entre os tópicos estudados em arquitetura de computadores, um 
 
1 Trabalho de Conclusão de Curso II, referente ao Curso de Ciência da Computação; submetida ao Curso de Ciência da Computação da 
Universidade Luterana do Brasil, Campus Canoas. 
2 Professor orientador - Formação em Engenharia Elétrica, Mestre em Ciência da Computação e professor das disciplinas de Arquitetura de 
Computadores I e II. 
2 
aspecto de grande importância é o estudo dos princípios básicos de funcionamento do computador, em 
especial o entendimento sobre a CPU (Central Processing Unit), memória principal, barramentos e 
dispositivos de entrada e saída. Na década de 50, um cientista chamado John von Neumann, precursor nos 
estudos na área da computação, definiu um modelo abstrato de organização interna do computador (ZANUZ, 
MARCHIORO e PETRY, 2006). O modelo definido por Neumann em 1950 é até hoje utilizado como 
referência para a arquitetura de computadores modernos. 
No estudo sobre arquitetura de computadores é amplamente discutido o modelo de von Neumann, os 
componentes integrantes e seu funcionamento. Para fixação dos conceitos teóricos envolvidos, os educadores 
utilizam ferramentas para demonstração de como é a operação interna do computador e a integração dos 
dispositivos, onde os alunos possam visualizar como é realizado o processamento das informações e o fluxo 
interno de operações. As ferramentas utilizadas são geralmente software simuladores, compostos 
virtualmente pela CPU, memória principal e caminho de dados e dispõem de uma interface de interação com 
o usuário na qual simulam operações básicas de hardware. Existem hoje disponíveis para uso alguns 
software simuladores nos quais é possível demonstrar algumas operações de máquina, com o objetivo 
principal de melhorar o entendimento dos alunos quanto ao funcionamento interno do computador. Porém, 
verifica-se que essas ferramentas apresentam algumas deficiências ao não explicitar suficientemente o fluxo 
de operações do hardware. 
O foco deste trabalho é o estudo de conceitos gerais relacionados à área de Arquitetura e 
Organização de Computadores, que compreende um dos tópicos nos estudos de Ciência da Computação. O 
objetivo é apresentar o desenvolvimento de uma ferramenta para simulação do funcionamento interno do 
computador, seguindo o modelo de von Neumann, mas preservando as características reais de como o 
hardware opera. Foram analisados alguns aplicativos de simulação existentes e verificou-se que, de modo 
geral, os software simulam as operações corretamente, mas deixam a desejar no que tange a forma de 
apresentação da simulação. A visualização dos fluxos dos processos, realizados na execução dos programas, 
não demonstram fielmente como ocorrem as operações no nível do hardware. Então, a proposta deste 
sistema é apresentar a simulação do processamento de um programa em baixo nível que tenha uma interface 
com um visual mais próximo de como é o hardware interno do computador. 
Para o desenvolvimento deste artigo, inicialmente serão abordados conceitos referentes ao modelo 
original do computador desenvolvido por von Neumann, tratando de forma individual cada um dos 
componentes do hardware e seu funcionamento. Também é abordado o software de baixo nível: linguagem 
de montagem e linguagem de máquina. Além disso, são expostos dois software de simulação similares, seu 
desenvolvimento e suas principais características, assim traçando um parâmetro para análise e comparação 
do software desenvolvido. Após esse embasamento inicial, são iniciados efetivamente os tópicos referentes 
ao desenvolvimento do sistema, iniciando pela exposição de suas funcionalidades, abordando o seu modelo 
conceitual e fazendo uma exposição de duas versões do diagrama de sequência, apresentando uma visão 
dinâmica do ciclo de funcionamento do simulador. Ainda tratando da caracterização do sistema, é 
apresentado o conjunto de instruções básicas definidas e também a sua linguagem própria, utilizada para 
descrição dos programas. Como objetivo de apresentar de forma sistematizada os resultados do simulador, é 
abordado um tópico específico a respeito da validação do sistema, forma de avaliação e resultados obtidos. 
Finalizando o artigo, são feitas as conclusões e é feita uma discussão a respeito de trabalhos futuros, 
abordando questões relativas à expansão do software, onde são avaliadas algumas possibilidades de 
expansão do sistema, que pode servir como ferramenta de estudo para futuros interessados. 
2 ABRANGÊNCIA DO PROJETO 
O projeto proposto apresenta como foco central de aplicação a Arquitetura e Organização de 
Computadores, mas, para seu desenvolvimento também envolveu o estudo de outras áreas relativas à Ciência 
da Computação. A seguir é exposta uma sucinta descrição das áreas de envolvimento deste projeto, são elas: 
• Arquitetura e Organização de Computadores: É o tema central da aplicação deste trabalho, os 
conteúdos referentes a esta área de estudo são indispensáveis para a fundamentação teórica e 
servem como base para a construção do sistema. Neste projeto, trata-se da implementação de um 
simulador do funcionamento do hardware, em baixo nível. Portanto, é objeto de estudo e 
implementação no sistema, além de seu hardware, também seu software de baixo nível. 
• Projeto e Desenvolvimento de Sistemas: É o tema central da execução deste trabalho, pois o 
resultado é o desenvolvimento um software de simulação. Para execução deste projeto, optou-se 
pela utilização da linguagem de programação Java, cuja ferramenta de desenvolvimento foi a IDE 
3 
Netbeans. O NetBeans IDE é um ambiente de desenvolvimento - uma ferramenta para 
programadores escreverem, compilarem, depurarem e implantarem programas. É escrito em Java, 
mas pode suportar qualquer linguagem de programação. Existe também um enorme número de 
módulos para aprimorar o NetBeans IDE. O NetBeans IDE é um produto gratuito sem restrições 
de como ser utilizado (NETBEANS.ORG). Como plataforma utilizada para o modelamento do 
sistema, a UML foi utilizada para todas as etapas de concepção da aplicação. Foram 
desenvolvidos Diagramas de Casos de Uso, Classes e Sequência, que foram de fundamental 
importância para entendimento do sistema. 
• Conceitos de IHC e Programação Java: O resultado deste projeto foi a criação de um sistema 
computacional que simula o funcionamento do hardware. Esse sistema tem um apelo visual 
muito significativo, pois se trata de um simulador gráfico. Portanto, foi objeto de estudo a área de 
Interface Homem Computador (IHC) e seus conceitos, visando desenvolver o sistema alinhado 
com as melhores práticas, no que tange o desenvolvimento de sistemas, cujo objetivo é fornecer 
ao usuário uma interface de fácil adaptação e conforto em sua manipulação. Segundo Preece 
(1994), mais do mais do que o projeto de interface, a área de IHC se preocupa com as 
comunicações ou interações entre usuários e computadores. Sua definição da área confere 
responsabilidades como elaboração do projeto, avaliação e implementação de sistemas 
computacionais interativos para uso humano, além de estudos suplementares sobre fenômenos 
relevantes que envolvam os aspectos de interação. Conforme já exposto, o sistema foi 
desenvolvido através da linguagem de programação Java, portanto essa linguagem foi objeto de 
estudo profundo. O objetivo foi desenvolver um sistema funcional, robusto e ao mesmo tempo 
prático quanto à sua utilização. Java é uma linguagem de programação e uma plataforma de 
computação lançada pela Sun Microsystems em 1995. É a tecnologia que capacita muitos 
programas da mais alta qualidade, como utilitários, jogos e aplicativos corporativos, entre muitos 
outros, por exemplo (SUN MICROSYSTEMS). 
 
3 MODELO DE VON NEUMANN 
Desenvolvido no início da década de 50 e utilizado até hoje como base para a arquitetura de 
computadores modernos, o modelo computacional original de von Neumann3, define que a estrutura interna 
do computador reúne os seguintes componentes: Memória, Unidade de controle, Unidade lógica aritmética e 
Dispositivos de Entrada e Saída. O sincronismo de funcionamento destes dispositivos faz com que o 
computador receba, armazene e processe as informações (ZANUZ, MARCHIORO e PETRY, 2006). 
3.1 Modelo Original 
 
Figura 1 – Modelo original arquitetura von Neumann 
Fonte: Tanenbaum (2001, p. 10) 
A Figura 1 representa o modelo original de arquitetura de computadores. Basicamente Neumann 
definiu que a estrutura interna do computador seria formada por cinco componentes indispensáveis, que são: 
Memória, Unidade de controle, Unidade lógico aritmética, Dispositivos de entrada e saída. 
Cada um dos elementos de hardware acima apresentados são implementados em dispositivos físicos 
 
3 John von Neumann, nascido em Budapeste – Hungria em 28 de dezembro em 1903, viveu até fevereiro de 1957, tendo formação na área da 
matemática, foi um pioneiro nos estudos de Ciência da Computação. 
4 
independentes, que ao longo do tempo foram sofrendo uma série de modificações em função da evolução das 
tecnologias existentes, desde a fabricação de relés eletromagnéticos e válvulas, até hoje na implementação de 
semicondutores, transistores e circuitos integrados, nos quais foram ao longo do tempo reduzindo 
significativamente em tamanho e aumentando muito em densidade e desempenho. 
3.2 Arquitetura do computador – Apresentação atual 
O modelo desenvolvido por Neumann na década de 50 definiu um conceito mais analítico de como 
seria organizado internamente um computador, e de que forma se daria o fluxo de operações da máquina. 
Como principal aspecto de mudança entre o modelo original e o modelo atual é apresentada da CPU, sendo 
composta pela Unidade de controle e Unidade lógica aritmética. Com o passar do tempo os estudos na área 
foram avançando, bem como as tecnologias foram se aperfeiçoando e hoje o modelo conceitual da 
arquitetura interna de um computador se mostra um pouco diferente do modelo original, tratando a CPU 
como um único componente (Figura 2), da mesma forma como os dispositivos de entrada e saída, assim 
apresentando o modelo de uma forma mais sintética, abstrata. 
 
Figura 2 – Arquitetura interna atual de computadores 
Como pode-se visualizar na Figura 2, o modelo original foi modificado ao longo do tempo de modo 
a apresentar de forma mais realística como estão distribuídos os componentes essenciais definidos por 
Neumann. Os barramentos de comunicação estão dispostos mostrando que os dispositivos estão conectados 
entre si e principalmente pode-se identificar uma mudança na representação conceitual da CPU, 
possibilitando a identificação dos componentes que a integram, Unidade de Controle e Unidade Operacional, 
que é composta pela ULA e registradores. 
3.2.1 CPU 
A CPU ou UCP, Unidade Central de Processamento, conforme Figura 3, é a responsável pelo 
controle das funções internas do computador e é composta por dois componentes: Unidade de Controle (UC) 
e a Unidade Operacional (UO), que em muitas literaturas é denominada caminho de dados, onde fisicamente 
as operações são executadas. (ZANUZ, MARCHIORO e PETRY, 2006). Conforme apresentado na Figura 3, 
sobre a composição da CPU, abaixo segue a conceituação de cada um dos seus dispositivos integrantes: 
 
 
Figura 3 – Modelo conceitual de CPU 
5 
• Unidade de Controle: É a responsável por informar cada um dos dispositivos de hardware, 
unidade operacional, memória de dispositivos de entrada e saída o que cada elemento deve fazer, 
a partir da decodificação de uma instrução. (ZANUZ, MARCHIORO e PETRY, 2006). 
• Unidade Operacional: A unidade operacional, ou caminho de dados, tem uma arquitetura 
particular. Ela é a responsável pela execução das operações do computador. Seus dois elementos 
fundamentais são: ULA – Unidade lógica aritmética e os Registradores. Abaixo segue a 
conceituação de cada um desses componentes. (STALLINGS, 2003). 
• ULA: A unidade lógica aritmética é uma coleção de circuitosque realizam as operações sobre os 
dados, as operações básicas incluem adição, subtração e ainda manipulações de bits 
(deslocamentos ou combinação de bits). (STALLINGS, 2003). A Figura 4 apresenta uma 
ilustração simplificada de uma ULA, onde em seu funcionamento é apresentada as entradas de 
dados, simbolizadas por A e B, o sinal de controle determinando a operação a ser realizada S e o 
resultado final obtido F. 
 
Figura 4 – ULA – Unidade logica aritmética 
• Registradores: Os registradores, conforme Figura 3, são posições de memória construídas dentro 
da CPU. Fisicamente os registradores estão integrados nos circuitos da CPU, cujo objetivo é 
aumentar a velocidade de acesso aos dados, cerca de 5 a 10 vezes mais rápido do que acessando 
os dados da memória principal (TANENBAUM, 2001). Um computador possui um número 
limitado de registradores, onde são reservados para o armazenamento dos dados que a CPU está 
usando naquele momento. O computador em funcionamento fica copiando constantemente os 
dados da memória principal para os registradores. Esta troca de informações é realizada através 
dos barramentos de comunicação, que conectam entre si a ULA, os registradores e a memória 
principal. 
3.2.2 Memória 
É o dispositivo responsável pelo armazenamento das informações, são elas: informações para 
processamento e instruções de programa. Segundo Tanenbaum (2001, p. 33), sem uma memória na qual os 
processadores possam ler ou escrever informações, o conceito de computador digital com programa 
armazenado não pode ser implementado. 
3.2.3 Dispositivos de Entrada e Saída 
Pode-se conceituar dispositivos de entrada e saída como periféricos responsáveis pela entrada ou 
saída de dados do computador, fazendo a interação do computador com o mundo externo. Os dispositivos 
podem ser somente de entrada, somente de saída ou de entrada e saída. Dentre os dispositivos cita-se teclado, 
monitor, scanner, mouse, impressora entre outros. (PATTERSON E HENESSY, 2000). 
3.2.4 Barramentos 
Os barramentos são um conjunto de linhas de comunicação ou conjunto de caminhos elétricos que 
permitem a interligação entre os dispositivos. Segundo Patterson e Henessy (2000), um barramento nada 
mais é do que um link de comunicação compartilhado, que usa um conjunto de fios para a conexão dos 
vários subsistemas. Esses barramentos transportam sinais de dados, endereços ou bits de controle. Os 
barramentos podem ser seriais, um bit por vez na linha de comunicação, ou paralelo, vários bits sendo 
transmitidos em paralelo por várias linhas simultâneas. O computador possui barramentos de vários tipos, 
citam-se: Barramentos de dados que são utilizados para carregar os dados entre a CPU, a memória RAM e as 
portas de E/S, Barramentos de endereçamento que são utilizados para especificar qual o endereço da 
memória RAM ou qual porta de E/S deve ser utilizada e os Barramentos de controle que são utilizados para 
6 
transportar a todas as unidades do sistema os sinais de controle, sinal de relógio. (PATTERSON e 
HENESSY, 2000). 
4 SOFTWARE DE BAIXO NÍVEL 
4.1 Linguagem de montagem 
A linguagem de montagem ou assembly é o nome dado para uma linguagem de programação que 
utiliza essencialmente uma representação simbólica para uma linguagem de máquina numérica, ou seja, na 
linguagem de montagem é estruturado um programa de forma simbólica, com caracteres (símbolos) 
específicos da linguagem, que representam um programa em linguagem de máquina (TANEMBAUM, 
2001). 
Utilizando a linguagem de montagem se torna muito mais simples para as pessoas programarem do 
que utilizando linguagem de máquina. A utilização de nomes simbólicos e endereços simbólicos em vez de 
nomes em binário, octal ou hexadecimal faz uma grande diferença para um programador, que assim tem um 
maior desempenho para realizar sua programação. Citam-se como exemplos os comandos de adição, divisão, 
subtração e multiplicação em linguagem de montagem, respectivamente: ADD, DIV, SUB e MUL. 
Utilizando comandos de mais alto nível, como esses citados no exemplo, fica mais simples para um 
programador desenvolver um programa. 
Tratando-se de linguagem de montagem, alguns aspectos precisam ser elucidados. Em primeiro lugar 
é importante frisar que cada arquitetura de processador tem seus comandos específicos, ou seja, tem sua 
linguagem de montagem proprietária com comandos específicos para tal linguagem. Então, diferentemente 
de um programa escrito em uma linguagem de alto nível, que pode ser portado e executado em qualquer 
arquitetura de processador4, um programa escrito em uma linguagem de montagem de uma específica 
arquitetura, poderá somente ser executado em computadores que tenham essa arquitetura. 
Outro aspecto da linguagem de montagem é referente ao desempenho de execução. Para o mesmo 
algoritmo escrito em linguagem de alto nível e escrito em linguagem de montagem, aquele escrito em 
linguagem de montagem provavelmente terá um desempenho de execução melhor, pois o código produzido 
tende a ser muito menor e mais rápido durante a execução. Como exemplo cita-se o software que é 
executado em dispositivos embarcados e rotinas da BIOS (Basic Input/Output System) de um computador. 
Estes precisam de um código mais enxuto e mais rápido possível, nesse caso a programação em linguagem 
de montagem é a melhor opção. O terceiro aspecto importante a ser tratado sobre linguagem de montagem 
diz respeito ao acesso aos recursos de máquina, para execução de determinados procedimentos é preciso ter 
acesso completo ao hardware, como, por exemplo, o tratamento de interrupções de hardware, utilizando um 
programa gerado através de uma linguagem de alto nível não será possível acessar e controlar diretamente o 
hardware, algo que é possível utilizando uma linguagem de montagem. 
A linguagem de montagem será parte integrante do conteúdo deste projeto, pois no software 
simulador do funcionamento do computador, o usuário poderá utilizá-la de modo a passar instruções para 
serem executadas no simulador através de um programa. Para o desenvolvimento do projeto, será criada a 
própria linguagem de montagem do simulador. 
4.2 Linguagem de máquina 
Linguagem de máquina é a linguagem básica de operação do computador, sendo constituída por uma 
sequência de bits. Segundo Tanenbaum (2001), as instruções básicas de um determinado computador 
formam uma linguagem por meio da qual é possível às pessoas se comunicarem com a máquina. Tal 
linguagem é chamada de linguagem de máquina. Os projetistas de computador precisam decidir quais 
instruções devem fazer parte de sua linguagem de máquina. 
Um programa explícito em código de máquina consiste em uma sequência de números, onde essa 
sequência representa um conjunto de instruções a serem executadas. Para o desenvolvimento do software de 
simulação será criado uma linguagem de máquina específica, com um conjunto de instruções particular do 
sistema. 
Atualmente não é mais utilizado pelos programadores o desenvolvimento de programas em 
linguagem de máquina, devido à complexidade de programação e baixo desempenho no desenvolvimento. 
 
4 Em teoria um programa escrito em uma linguagem de alto nível pode ser portado de uma arquitetura para outra mantendo compatibilidade quanto 
à sua execução, entretanto, existem algumas incompatibilidades de execução de programas portados entre arquiteturas de 32 e 64 bits. 
7 
Existem disponíveis algumas linguagens de alto nível, com comandos específicos, onde após o programa 
escrito e compilado geram o código de máquina, com as instruções referentes ao que foi desenvolvido. 
5 SOFTWARES SIMULADORES EXISTENTES 
5.1 K&S – The Knob and Switch Computer 
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 softwarefoi 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 5 mostra a interface do 
software, sendo ilustrada a interface do K&S no modo simulador completo do computador – CPU e memória 
principal (http://users.dickinson.edu/~braught/kands/kands.html). 
 
Figura 5 – Interface simulador K&S (modo completo) 
Na Figura 5, pode-se identificar os componentes da CPU, que são a unidade de controle e a unidade 
operacional (caminho de dados) e também a memória principal. Para operação do software, o usuário pode 
escolher se desejar operar o sistema no modo completo ou com os módulos individuais. 
O simulador K&S, operando no modo completo, propicia ao usuário uma visão completa do 
funcionamento do computador. Neste modo está implementado o caminho de dados com todas as suas 
funcionalidades, a memória principal e ainda agrega da unidade de controle da CPU. Com a integração 
desses dispositivos o usuário pode parametrizar uma operação em linguagem de máquina, para ser executada 
 
5 GNU – General Public License é um modo de disponibilização de software para o domínio público, possibilita que outras pessoas possam se 
utilizar do código fonte de modo a fazer alterações e geração de novas versões, o GNU Copyleft tem o mesmo conceito, mas ainda impõe que 
quem se utilizar do código pode fazer alterações, gerar novas versões, mas não tem permissão de retirar o direito de GNU CopyLeft das novas 
versões geradas, ao contrario da GNU básica onde se utiliza dessa prática. 
8 
pela CPU. A interface do simulador, operando no modo completo pode ser visualizada na Figura 5. 
O K&S foi analisado sob vários aspectos, com o objetivo de avaliar seu funcionamento e servir de 
certa forma como parâmetro para o desenvolvimento do simulador, produto deste trabalho. Identificou-se 
uma série de pontos referentes ao processo de simulação que não evidenciam de forma correta tanto 
graficamente quanto a nível de funcionalidades e funcionamento do computador. Citam-se alguns pontos: 
Apresenta na interface de botões para seleção dos registradores e operação da ULA, chaves de seleção, não 
apresenta os barramentos de comunicação entre os componentes do hardware, programação direta na 
memória, memória de baixa capacidade, não permite utilização de variáveis na declaração do programa, não 
permite que um programa seja salvo para posterior execução, entre alguns outros aspectos. 
5.2 Neander 
O Neander é a segunda ferramenta de simulação analisada neste artigo. 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. 
A versão inicial do Neander foi desenvolvida em uma linguagem modo texto. Em função disso com 
o avanço das tecnologias essa versão ficou obsoleta. Em 2001, ainda com o auxilio de Raul e Taisy, mas com 
o desenvolvimento do professor Fábio Augusto Dal Castel (UFRGS) foi implementado o Neander em modo 
gráfico, conforme ilustra a Figura 6. 
 
Figura 6 – Computador hipotético Neander (versão gráfica) 
O Neander, igualmente ao simulador visto anteriormente, foi desenvolvido para fins didáticos, como 
principais características referentes ao funcionamento de Neander citam-se: Largura de dados e endereços de 
8 bits, dados representados em complemento de dois, um contador de programa de 8 bits e 256 posições de 
memória. Sobre o conjunto de instruções contidas nesse modelo, estão presentes ADD, LOAD, OR, AND, 
JUMP, HALT, entre outras. (WEBER, 2001). 
Assim como realizado com o simulador K&S, o simulador Neander foi analisado quanto aos 
recursos oferecidos bem como seu funcionamento, têm-se como aspectos negativos quanto ao simulador 
Neander os seguintes pontos: A interface não apresenta os de forma gráfica os componentes de baixo nível 
de hardware, não apresenta graficamente a interação dos componentes do hardware durante a execução de 
um programa, apresenta a memória em duas visões (memória de dados + memória de programa), implementa 
somente um registrador. 
9 
6 DESENVOLVIMENTO DO SIMULADOR 
Nesta seção inicia-se a descrição sobre o desenvolvimento do sistema, abordando inicialmente a 
metodologia utilizada para modelagem, que para este projeto foi baseada na UML. Após as definições a 
respeito da metodologia é abordado o sistema em âmbito geral, tratando dos seus recursos e funcionalidades. 
Utilizada atualmente como principal linguagem para documentação e modelagem de sistemas, a 
UML – Unified Modeling Language ou Linguagem de Modelagem Unificada é uma linguagem padrão para a 
elaboração da estrutura de projetos de software (BOOCH, RUMBAUGH e JACOBSON, 2003). Dentre os 
diagramas integrantes da UML e utilizados para modelagem de diferentes tipos de sistemas, neste projeto, 
optou-se pela utilização de três, para servir como base para a execução do projeto. Os diagramas 
desenvolvidos foram: Diagrama de Casos de Uso, Diagrama de Classes e Diagrama de Sequência. 
6.1 Definição das Funcionalidades 
O diagrama de casos de uso foi utilizado para mapeamento de todos os requisitos funcionais do 
sistema, principalmente para servir de base para os outros diagramas desenvolvidos. Com a criação do 
diagrama de casos de uso é possível identificar os atores envolvidos no sistema, bem como as 
funcionalidades que o sistema irá executar (BOOCH, RUMBAUGH e JACOBSON, 2003). A seguir é feita 
uma breve definição referente a cada um dos casos de uso definidos, que são apresentados na Figura 7. 
 
Figura 7 – Diagrama de Casos de Uso 
6.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. 
10 
6.1.2 Programar Computador 
É uma funcionalidade que foi generalizada em outros dois casos de uso. Seu objetivo é definir a 
funcionalidade de inserir um programa para ser executado no simulador, em uma linguagem própria definida 
no projeto, que será abordada na sequência do artigo. A definição das funcionalidades dos casos de uso 
associados a Programar Computador são definidos a seguir: 
• Abrir Programa Salvo: É uma generalização do caso de uso “Programa Computador”, e refere-
te à funcionalidade de abrir/importar para o sistema um programa que previamente foi salvo. 
• Digitar Novo Programa: Também é uma generalização do caso de uso “Programa Computador”, 
e refere-te à funcionalidade dedigitar um novo programa, para posteriormente ser executado no 
simulador. 
• Salvar Programa: Tem a função de salvar um programa inserido no computador. É gerado um 
arquivo com a descrição do programa e salvo em alguma unidade de armazenamento, a ser 
definida pelo usuário. 
• Salvar Arquivo no Disco: Esta funcionalidade é iniciada a partir da execução do caso de uso 
anterior, “Salvar Programa”, e tem a função de gravar no disco um arquivo contendo o conteúdo 
de um programa previamente inserido no simulador. O resultado é a geração de um arquivo, com 
um formato específico para uso no simulador. 
• Montar Programa: Tem a função de montar um programa e só pode ser executado após a 
execução do caso de uso Programa Computador. Seu resultado é organizar o programa inserido 
num formato que possa ser interpretado pelo simulador. 
• Carregar Programa: Tem a função de carregar um programa para a memória do computador, 
definido neste simulador. Este caso de uso somente pode ser executado após a execução dos casos 
de uso “Programa Computador” e “Montar Computador”. Seu resultado é um programa carregado 
na memória, pronto para ser executado. 
• Carregar Memória: Esta funcionalidade é executada a partir da execução do caso de uso 
anterior, “Carregar Programa”, e realiza a função de carregar um programa, já previamente 
montado, para a memória do computador. 
• Limpar Programa: Está função é utilizada para reiniciar interface Programa. Quando acionada 
ela faz o apagamento dos dados digitados. Como pré-condição para a execução dessa função, 
alguma informação já deve ter sido inserida na interface Programa. 
6.1.3 Executar 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. 
6.2 Modelo Conceitual 
Entre todos os diagramas integrantes da UML, o diagrama de classes é o mais utilizado e o mais 
importante, pois a partir dele pode-se visualizar todas as classes que irão compor o sistema (BOOCH, 
11 
RUMBAUGH E JACOBSON, 2003). Visto que o software foi desenvolvido com os conceitos de orientação 
a objetos, este diagrama é indispensável. Para o desenvolvimento do sistema foram elaborados dois modelos 
diferentes de diagrama de classes. Em um modelo, denominado modelo de arquitetura, estão definidas todas 
as classes integrantes ao sistema, englobando classes abstratas e de serviços, todos os métodos e atributos. 
Este modelo tem um foco mais técnico e serviu como referência para a construção do sistema. Em 
contrapartida, foi desenvolvido outro modelo de diagrama de classes, denominado modo conceitual ou 
modelo de domínio, que se trata de um modelo de alto nível, cujo objetivo é apresentar o domínio do 
sistema, entender os seus conceitos, suas entidades e seus relacionamentos. Seu foco é o entendimento do 
domínio da aplicação, abstraindo aspectos de arquitetura e do desenvolvimento, que são integrantes do outro 
modelo. 
Para este artigo optou-se pela apresentação do diagrama de classes de modelagem conceitual, para 
facilitar o entendimento. O diagrama de classes de modelagem de arquitetura, que também foi desenvolvido, 
é apresentado no Apêndice A. 
 
Figura 8 – Diagrama de Classes: Modelo Conceitual 
A seguir é descrita a definição de cada uma das entidades que compõem o sistema, conforme é 
apresentado no modelo ilustrado na Figura 8. 
6.2.1 Simulador 
Esta classe, definida no modelo, está representando a interface principal do sistema, na qual o 
usuário realiza a programação e a execução de um programa. Pode-se identificar que, como principais 
características, a classe Simulador possui como atributos dois painéis: painel Programa e painel Computador. 
Citam-se no modelo como principais métodos dessa entidade: 
• CarregarInterface: Este método tem a funcionalidade de carregar, na tela do sistema, o painel 
Programa e o painel Computador. São as principais telas do sistema e servem de interface para 
interação do usuário com o simulador. 
• FecharInterface: Este método tem como funcionalidade fechar a interface e os painéis, caso os 
mesmos estejam abertos. 
12 
6.2.2 Programa 
É umas das entidades que compõem a entidade Simulador, cuja funcionalidade é disponibilizar ao 
usuário uma área de interação com o sistema, na qual ele possa inserir um programa para ser executado no 
simulador. A inserção de um programa pode ser realizada através da digitação de um novo programa ou 
abrindo um programa já existente, que foi previamente salvo. Compõe a entidade Programa a entidade 
Montador, que será descrita a seguir. Como principais métodos da entidade Programa, citam-se: 
• Programar: Este método implementa a funcionalidade de inserir um programa no simulador, 
seja abrindo um programa existente, que já tenha sido previamente salvo, ou digitando um novo 
programa. 
• CarregarPrograma: Este método implementa a funcionalidade de carregar um programa para 
memória. Como pré-condição para a utilização desta funcionalidade, o programa já deve ter sido 
previamente montado. O processo de montagem será descrito logo a seguir. 
• SalvarPrograma: Este método implementa a funcionalidade de salvar um programa que tenha 
sido previamente digitado. O resultado é a geração de um arquivo, num formato específico, 
contendo a descrição do programa inserido. 
• AnalisarErros: Esse método realiza uma análise no código inserido, fazendo uma consistência 
no programa digitado, buscando erros na sua estruturação. Caso ocorra algum erro, o sistema irá 
indicar ao usuário o problema encontrado. 
6.2.3 Montador 
É uma das entidades que compõem a entidade Programa. Sua funcionalidade é realizar o processo de 
montagem de um programa inserido no simulador. Como principal método da entidade Montador, cita-se: 
• MontarPrograma: Este método possui a funcionalidade de realizar o processamento e a 
montagem do programa. O processo de montagem consiste em analisar o programa, codificá-lo e 
organizá-lo de forma que possa ser carregado para a memória. 
6.2.4 Computador 
É uma das entidades que compõem a entidade Simulador, cujo propósito é apresentar para o usuário 
um painel, ilustrando um computador hipotético, simples, contendo o mínimo de elementos. Esse painel 
Computador é uma interface gráfica, na qual é realizada a simulação do funcionamento de um computador. 
O Computador é composto pelos seguintes elementos: Unidade de Controle, Memória e Caminho de 
Dados. Como principais métodos integrantes da entidade Computador, citam-se: 
• ExecutarPrograma: Este método é utilizado para iniciar o processo de execução deum 
determinado programa no simulador. Como pré-condição para o início da execução de um 
programa, o computador deve possuir previamente um programa já carregado na memória. 
• PausarPrograma: Este método implementa a funcionalidade de realizar uma pausa durante o 
processamento de um programa. 
• ReiniciarPrograma: Este método implementa a funcionalidade de reiniciar o processamento de 
um programa. O reinício da execução dá-se do ponto onde a execução foi pausada. 
• EncerrarPrograma: Este método implementa a funcionalidade de encerrar a execução de um 
programa, do ponto em que ele estiver quando esse método for acionado. 
6.2.5 UnidadeControle 
É um dos principais dispositivos na composição da CPU de um computador. A UC é a responsável 
por comandar o funcionamento de todos os outros dispositivos, através dos sinais de controle. Para o 
desenvolvimento do sistema foi criada uma implementação em software da UC. Os sinais de controle no 
software são os seus atributos, e as suas funções são os métodos. Seus principais atributos são: 
• Status: Este atributo referencia o registrador de status, elemento presente na constituição da CPU 
de um computador. 
• Controles: Forma generalizada de referenciar os sinais de controle da UC, citam-se como 
exemplos de controles: ICP, LCP, LRI, LRE, etc. Estes sinais de controles estão com seu nome 
abreviado, sua descrição completa está constando no dicionário de termos projeto, que pode ser 
visto no Apêndice B. 
• EndRegistradores: Este atributo referencia o endereço do registrador onde será inserida uma 
informação que foi previamente buscada da memória. 
• Operação: Esse atributo armazena qual operação deve ser executada pela ULA, a partir de uma 
13 
instrução lida da memória e decodificada. 
• RI: Este atributo referencia o Registrador de Instrução da UC, e sua funcionalidade é armazenar a 
instrução que é buscada da memória e armazenada na UC, para seu posterior processamento. 
• CP: Este atributo referencia o Contador de Programa da UC, e sua funcionalidade é armazenar o 
endereço da instrução que está sendo processada no momento. 
Além dos atributos, a Unidade de Controle possui uma série de métodos, que implementam suas 
funcionalidades. Na definição do modelo conceitual, citam-se os principais: 
• BuscaInstrução: Este método faz com que a UC busque em uma determinada posição da 
memória, informada pelo Contador de Programa (CP), uma instrução para ser processada. A 
instrução buscada na memória é armazenada no registrador de instrução. 
• DecodificaInstrução: Este método executa a funcionalidade de decodificar uma instrução 
armazenada no registrador de instrução da UC. Como pré-condição para a execução deste método 
é que previamente uma instrução já tenha sido lida e trazida da memória. 
• ExecutaInstrução: Este método implementa a principal funcionalidade de UC, realizar a 
execução de uma determinada instrução, fazendo com que a UC interaja com os demais 
elementos do hardware do computador, assim realizando a execução de uma instrução. 
6.2.6 Memória 
A memória é um componente muito conhecido e integrante da estrutura de um computador. Nos 
computadores atuais, a capacidade da memória é um aspecto fundamental para o desempenho do hardware. 
A memória do simulador foi implementada com uma capacidade de 256 bytes, sendo dividida em 256 
posições de 8 bits cada, sendo endereçadas de 0 a 255. Para o desenvolvimento do simulador criamos uma 
implementação de software da memória, onde temos como principais atributos: 
• Memória: Este atributo refere-se propriamente a memória, repositório do programa, que no 
simulador trata-se de um vetor de Strings com 256 posições. 
• CS: Este atributo referencia o sinal de controle Chip Select da Memória, cuja funcionalidade é 
colocar a memória em modo de operação, pronta para executar os métodos de leitura ou escrita. 
• RW: Este atributo referencia o sinal de controle de Read/Write da memória, cuja funcionalidade é 
atribuir o modo de operação da memória, em modo Read ou modo Write. 
• RE: Este atributo referencia o registrador de endereços, e sua função é armazenar o endereço da 
memória onde está o ponto de execução do programa. 
• RD: Este atributo referencia o registrador de dados da memória. 
Além dos atributos, no modelo conceitual definiram-se as principais funcionalidades da memória, 
seus métodos, citam-se: 
• Escrever: É através da execução deste método que as informações são escritas na memória. Esse 
método recebe duas informações, o endereço e o dado a ser inserido. Assim realiza a função de 
armazenamento de uma determinada informação. 
• Ler: Este método implementa a funcionalidade de leitura da memória. Para execução este método 
recebe um parâmetro, um endereço, recebido do registrador de endereço. Na sua execução, busca 
o dado que consta no endereço recebido e o armazena no registrador de dados. 
6.2.7 Banco de Registradores 
 O banco de registradores existente no simulador é similar aos registradores encontrados na CPU de 
um computador convencional. Esse banco de registradores é formado por quatro registradores mais bits de 
endereçamento, que no modelo conceitual foram definidos como atributos. A seguir estão suas definições: 
• R1, R2, R3 e R4: Esses atributos referenciam os quatro registradores integrantes na CPU do 
simulador. 
• ERX/ERY: Este atributo é utilizado para endereçar um registrador do banco de registradores. 
Está definido, no modelo conceitual, o principal método do banco de registradores, que diz respeito a 
sua funcionalidade, que é: 
• CarregarRegistrador: Um registrador pode ser carregado a partir de uma informação disponível 
no registrador de dados ou através da saída da ULA. Este presente método implementa a 
funcionalidade de carregar o dado para o registrador. 
14 
6.2.8 ULA 
A ULA executa uma determinada operação a partir dos dados que são recebidos do banco de 
registradores. Para esse projeto, cujo propósito é ser uma ferramenta didática, definiu-se uma quantidade 
reduzida de operações, mas que propiciam ao usuário um entendimento quanto ao fluxo de execução. A 
ULA possui duas entradas de dados, uma saída de dados e um indicador de operação, que no modelo 
conceitual ambos foram definidos como atributos, conforme segue: 
• X/Y: Atributos responsáveis por armazenar os dados recebidos do banco de registradores, 
referenciam a entrada de dados da ULA. 
• R: Este atributo é responsável por armazenar o resultado da operação da ULA, saída de dados. 
• OP: Atributo responsável por armazenar qual operação a ULA deve realizar em função dos dados 
recebidos. 
• Status: O atributo status da ULA referência o registrador de status presente na CPU de um 
computador. 
Além dos atributos integrantes a ULA, conforme acima descritos, também definiu-se os seus 
métodos no modelo conceitual. São eles: 
• Operação: Este método referencia a funcionalidade da ULA de realizar uma operação, em 
função dos dados recebidos na sua entrada. Para sua execução, esse método recebe como 
parâmetros dois valores e uma operação. Sua saída é a geração do resultado de uma operação e a 
chamada do método “AtualizarStatus”. 
• AtualizarStatus: Este método implementa a funcionalidade de atualizar o registrador de status a 
partir do resultado da operação da ULA. A pré-condição para execução deste método é a 
execução do método Operação. Sua saída é a atualização do registrador de status 
6.3 Modelo Dinâmico 
Com o objetivo de possibilitar uma visualização dinâmica entre os objetos, foram desenvolvidos os 
diagramas de sequência dos principais fluxos de operação do sistema. Esse tipo de modelagem apresenta um 
diagrama no qual visualiza-se a comunicação entre os objetos do sistema, agregando uma linha de tempo, 
possibilitando uma visualização das mensagens ocorrendo em sequência entre os mesmos. 
 
Figura 9 – Diagrama de Sequência 
Na Figura 9 pode-se visualizar o diagrama de sequência do ciclo de operação do computador, no que 
15tange o processamento das instruções. Conforme pode-se visualizar, a maior parte dos métodos são 
inicializados na Unidade de Controle, pois é o dispositivo que faz o controle de todos os fluxos de operação 
do hardware. Esse diagrama de sequência refere-se ao processo executado logo após a sequência de 
processos do diagrama analisado no tópico anterior, apresentado na Figura 9. A seguir será descrito a 
caracterização de cada um dos métodos que compõe esse diagrama de sequência: 
• ExecutarPrograma: Este é o último método executado no diagrama de sequência anterior e o 
primeiro a ser executado nesse diagrama, consiste em iniciar a execução de um programa no 
simulador. 
• BuscaInstrução: A Unidade de Controle durante o processamento de um programa executa uma 
sequência de operações, abstraindo esse conceito podemos definir que a Unidade de Controle 
executa uma sequência denominada : BI – DI – EI, respectivamente Busca Instrução, Decodifica 
Instrução e Executa Instrução. Este método é o primeiro da sequência, e consiste na UC buscar de 
uma instrução na memória, a instrução é armazenada no registrador de instrução da UC. 
• DecodificaInstrução: Este é o segundo passo executado pela UC, conforme foi definido no item 
anterior. Sua execução é realizada após a conclusão do método BuscaInstrução e consiste na 
interpretação da instrução que foi armazenada no registrador de instrução para determinar que 
operação o computador irá realizar naquele momento. 
• ExecutaInstrução: Último passo da sequência de execução da UC, somente pode ser iniciado 
após a conclusão dos dois métodos anteriores e consiste efetivamente na execução de uma 
instrução. Neste momento a UC passa a interagir com todos os outros elementos componentes do 
hardware, fazendo com que uma determinada instrução seja completamente processada. Após a 
conclusão da execução de uma instrução a UC retorna novamente para a busca de instrução, 
realizando o processo novamente. Caso a instrução seja HALT, a execução é terminada, pois esse 
comando determina o encerramento do programa. 
Conforme exposto neste tópico, foram desenvolvidos dois modelos do diagrama de sequência, o 
segundo modelo, que apresenta a sequência de passos realizada pelo usuário para colocar um programa em 
execução pode ser visualizado no Apêndice C. 
6.4 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 1 apresenta a descrição e a definição das instruções e sua codificação. 
Quadro 1 – Conjunto de Instruções do SVN 
Tipo Linguagem de Montagem Exemplo Significado Linguagem de Máquina 
MO LOAD REG [VAR] LOAD R0 [X] R0 = MEM [12] 000100 RRMMMMMMMM 
MO STORE [X] REG STORE [X] R0 [X] = R0 001000RRMMMMMMMM 
LA ADD RR RR ADD R0 R1 R0 = R0 + R1 1000 RR RR 
LA SUB RR RR SUB R0 R1 R0 = R0 – R1 1001 RR RR 
LA OR RR RR OR R0 R1 R0 = R0 || R1 1010 RR RR 
LA AND RR RR AND R0 R1 R0 = R0 & R1 1011 RR RR 
LA CMP RR RR CMP R0 R1 R0 = R0 = = R1 1001 RR RR 
DV JMP [LABEL] JMP VOLTA Desvia para VOLTA 00110000 MMMMMMMM 
DV JZ [LABEL] JZ VOLTA Desvia para VOLTA se zero 01000000 MMMMMMMM 
DV JN [LABEL] JN VOLTA Desvia para VOLTA se 
negativo 
01010000 MMMMMMMM 
OU HALT HALT Encerra o programa 11111111 
OU NOP NOP Nada a processar 00000000 
Estas são as instruções integrantes do software, maiores detalhes quanto a detalhes na especificação da 
instrução serão abordados no tópico referente a linguagem de montagem do sistema. 
16 
6.5 Linguagem de Montagem 
Foi definida no projeto do simulador uma linguagem própria, conforme citado em tópicos anteriores. 
Essa linguagem é utilizada para a construção dos programas que são executados no simulador onde permite a 
utilização de todas as instruções disponibilizadas pelo computador para a criação de novos programas. A 
linguagem do sistema possui uma sintaxe própria. 
Na estrutura de um programa, descrito com a linguagem do simulador, existem três seções distintas, 
cada uma com uma função específica na declaração do código, as seções são: Data, Code e Halt. 
• Data: Esta palavra fixa da linguagem define o início do código do programa e também define que 
logo abaixo estarão declaradas as variáveis utilizadas no código. 
• Code: Define o fim da seção de declaração de variáveis do programa. A partir desse ponto está a 
declaração do programa. 
• Halt: Define o fim da seção Code e referencia o término da declaração do programa. 
O Quadro 2 a seguir apresenta um exemplo de programa escrito na linguagem do simulador, no qual 
ficam evidenciadas as definições das seções na declaração do código. Tem-se também, na descrição de um 
programa, a declaração de LABELs no código, que são utilizadas na descrição das operações JN, JZ, JMP - 
instruções do tipo desvio. Sua declaração é abordada no Quadro a seguir. 
Quadro 2 – Exemplo de um programa 
DATA Seção DATA 
X DB 12 Declaração da variável X, lhe atribuindo o valor 12 
Y DB 4 Declaração da variável X, lhe atribuindo o valor 4 
Z DB 0 Declaração da variável X, lhe atribuindo o valor 0 
CODE Seção CODE 
LOAD R0 [X] Carrega para o registrador R0 o valor da variável X 
LOAD R1 [Y] Carrega para o registrador R1 o valor da variável Y 
VOLTA: Declaração da label VOLTA 
SUB R0 R1 Operação de subtração, subtrai o valor de R0 menos R1 
JZ SAI Se o resultado da ULA for 0 (Zero), pula para a Label SAI: 
JMP VOLTA Pula para a label VOLTA 
SAI: Declaração da label SAI 
HALT Seção HALT, término da declaração do programa 
 
6.6 Montador 
Nos tópicos anteriores foram abordados o conjunto de instruções e a linguagem de montagem 
desenvolvidos para implementação do projeto do simulador. Para englobar esses dois tópicos distintos do 
escopo do projeto, foi implementado no sistema um montador, recurso modelado via software que realiza a 
montagem de um programa inserido no simulador, programa esse descrito baseado nas regras da linguagem 
de montagem e que utiliza na sua descrição os comandos definidos no conjunto de instruções do software. O 
processo de montagem, permite após a sua execução, que um programa seja processado pelo simulador. 
Na interface do simulador, no painel programa, abordado em tópicos anteriores, apresenta o 
resultado do processo de montagem, ou seja, o programa montado, visualizado de diferentes formatos ao 
mesmo tempo. É apresentado na tela para o usuário o programa montado no formato assembly e no formato 
binário, descrito em linguagem de montagem. Essa forma dinâmica de visualização caracteriza um 
diferencial entre os simuladores analisados. 
O montador desenvolvido, possui implementado em seu escopo a análise léxica, sintática e 
semântica, aspectos que são analisados durante o processo de montagem de um programa. Também durante 
o processo de montagem ocorre o processo de análise de erros do código, que também foi implementado no 
escopo do simulador, tal funcionalidade permite ao usuário identificar possíveis erros durante a descrição de 
um programa. No tópico relacionado a trabalhos futuros, descrito ao final deste artigo, aborda alguns tópicos 
referentes a ajustes a adaptações no processo de montagem e de análise de erros do código. 
17 
7 INTERFACE 
Este tópico tem o objetivo de apresentar a interface do sistema. Conforme abordado em tópicos 
anteriores, o sistema tem sua interface composta por dois painéis, o painel Programa e o Painel Computador. 
É através desses painéis que o programa é inserido e a simulação pode ser visualizada. 
7.1.1 Painel Programa 
A Figura 11 apresenta o painel Programa, é através dele que um programa é inserido no simulador, 
posteriormente é montado e carregado para memória. Conforme pode-se visualizar, a interface da área de 
programado simulador é composta por alguns elementos, os quais serão apresentados a seguir: 
 
Figura 11 – Interface: Painel Programa 
• Linguagem de Montagem: Esse box mais a esquerda, denominado linguagem de montagem, é 
uma área exclusiva de texto. É nessa área de texto que o usuário faz a digitação de um programa 
para ser processado pelo simulador. 
• Memória - Código: Esta área central representa a memória do computador, sua função é 
armazenar um programa já montado no formato assembly. Essa área é preenchida após a 
execução da função Montar Programa. 
• Memória – Binário: Esta área mais a direita também representa a memória do computador, sua 
função é armazenar um programa já montado no formato binário, linguagem de máquina. Essa 
área é preenchida após a execução da função Montar Programa. 
• Botão Montar: O botão Montar implementa a função Montar Programa, já definida na seção 
funcionalidades do sistema. 
• Botão Limpar: O botão Limpar implementa a função Limpar Programa, já definida na seção 
funcionalidades do sistema. 
• Botão Carregar: Este item implementa a função Carregar Programa, já definida na seção 
funcionalidades do sistema. 
• Saída: Esta área abaixo na tela é utilizada para informar o usuário os erros encontrados no código 
durante a execução da montagem, caso encontre erros. 
18 
7.1.2 Painel Computador 
A Figura 12 apresenta o painel Computador, é nesse painel que acontece a ilustração do 
funcionamento de um computador durante a execução de um programa, onde ocorre a simulação. O painel 
Computador é composto pelos seguintes elementos: Unidade de Controle, Memória, Caminho de Dados e 
Painel Status. 
 
Figura 12 – Interface: Painel Computador 
• Unidade de Controle: Esta área, localizada no topo da interface, representa graficamente a 
Unidade de Controle do computador. Nela visualizam-se todos os sinais de controles comandados 
pela UC e estão relacionados com os outros componentes da interface. 
• Memória: Esta área da interface referencia a memória do computador, e conforme visualiza-se 
na interface, possui outros elementos que são utilizados durante a execução de um programa. 
• Caminho de Dados: Este área, também conhecida como Unidade Operacional, integra dois 
componentes do hardware, o Banco de Registradores e ULA. 
• Painel Status: Esta área, localizada acima na interface, apresenta durante a execução do 
programa a informação da execução que está sendo processada no momento, bem como as micro-
operações realizadas pelo hardware para a execução da instrução. Esta área á atualizada 
automaticamente a cada novo instrução iniciada. 
 
Na Figura12 é apresentada a interface principal do sistema, onde estão abreviadas as descrições dos 
elementos. A descrição completa pode ser visualizada no documento anexo 2, dicionário de termos. 
8 AVALIAÇÃO E RESULTADOS 
O software desenvolvido, resultado deste projeto, é uma ferramenta com foco didático que servirá de 
auxílio para o ensino de conteúdos relacionados à arquitetura e à organização de computadores. O público 
alvo para utilização deste software são alunos de graduação dos cursos das áreas de Tecnologia da 
Informação, Engenharia da Computação e Sistemas Digitais. Visando apresentar sólidos resultados quanto a 
real utilidade do sistema, foi elaborado um instrumento de avaliação, uma ficha composta por uma série de 
questões, na qual são abordados os seguintes critérios: Interface, Visualização dos Elementos, Entendimento 
do hardware, Simulação, Recursos do Sistema, Linguagem e Avaliação Geral. Todos os itens foram 
19 
avaliados por meio de perguntas, com respostas fornecidas como notas de 1 a 10. O instrumento de avaliação 
foi aplicado nas turmas de Arquitetura de Computadores I e II, dos cursos da área de Tecnologia da 
Informação da Universidade Luterana do Brasil. Ao total foram obtidas 25 avaliações. O Quadro 3 apresenta 
os critérios avaliados bem como os resultados apurados, valores médios obtidos como resposta em cada uma 
das questões. 
Quadro 3 – Avaliação do Sistema 
TÓPICOS DA AVALIAÇÃO MÉDIA 
1 Com relação à sua interface 8,87 
2 Com relação à visualização dos elementos que compõe o simulador 8,88 
3 Com relação ao entendimento do hardware do simulador 8,83 
4 Com relação a simulação do funcionamento do hardware, durante a execução de um programa 9,04 
5 Como relação aos recursos oferecidos pelo sistema 9,14 
6 Com relação à Linguagem de Montagem definida no simulador 9,00 
7 Qual sua avaliação geral com relação ao software? 9,00 
Conforme pode-se visualizar no Quadro 3, em todos os critérios de avaliação foram obtidas médias 
acima de 8,5 pontos e como avaliação geral do software foi obtido 9,0 pontos. Com base nos resultados 
apresentados, pode-se afirmar que o software foi avaliado sob vários critérios e o retorno obtido foi 
satisfatório. Os comentários foram positivos e o sistema bem aceito. 
No documento Apêndice D pode-se visualizar a avaliação completa, com os valores de resultados 
obtidos em cada uma das questões aplicadas. 
9 TRABALHOS FUTUROS 
O tema deste projeto é bastante amplo, pois se trata de uma área com um conteúdo muito abrangente. 
O projeto proposto neste artigo trata vários aspectos sobre o tema, mas ainda tem-se a possibilidade de 
avanços com relação a sua implementação, expandindo seus recursos e funcionalidades ou melhorando os 
existentes. Este tópico do projeto apresenta de forma sucinta alguns itens, onde identifica-se a possibilidade 
de continuidade de desenvolvimento, seja com a expansão do sistema ou readequação e melhorias de 
funcionalidades já implementadas. Este projeto será doado para a Universidade Luterana do Brasil e seu 
código fonte poderá ser integralmente utilizado para continuidade do projeto, estudos e novas 
implementações. Citam-se os itens: 
• Adequações no Processo de Montagem e Análise de Erros: O processo de montagem e 
verificação de erros que foi desenvolvido não executa uma analisa profunda no código, não 
implementa uma analise léxica, sintática e semântica robusta e precisa. Portanto, esta 
funcionalidade do sistema pode ser readequada provendo uma melhoria no sistema, inclusive 
pode ser analisada por interessados na área de compiladores. 
• Agregar Instruções: Conforme exposto em tópicos anteriores no artigo, o propósito deste 
projeto é a criação de um simulador simples, com um conjunto básico de instruções. Portanto, 
este tópico apresenta como possibilidade de expansão do sistema a criação de novas operações, 
para agregar aos recursos já existentes. Como possibilidades de novas instruções, citam-se: 
Multiplicação, Divisão, Incremento/Decremento de Variáveis, entre outras. 
• Novos Tipos de Variáveis: O sistema, em sua concepção atual somente é possível a criação de 
variáveis do tipo byte (DB), então como expansão pode-se agregar novo tipos de variáveis, como: 
String, Long Int ou Vetores, por exemplo, assim possibilitando a criação de programas mais 
sofisticados. 
• Implementação de Dispositivos de Entrada/Saída: Como uma grande funcionalidade a ser 
agregada, cita-se a implementação de dispositivos de entrada e saída, um teclado virtual e um 
monitor virtual, possibilitando a criação de programas que tenham a possibilidade de interação 
com o usuário quanto a entrada de dados durante o processamento, e também á visualização da 
saída de dados após o processamento. Assim, tornando a simulação mais próxima do 
funcionamento de um computador convencional. 
• Implementação de Instruções Imediatas: Implementação do recurso de operação com dados 
diretamente da memória, sem a necessidade de carregá-los para os registradores, otimizando a 
20 
execução dos programas. 
• Aumentar o Número de Registradores: O sistema disponibiliza somente quatro registradores 
na sua estrutura. Portanto, cita-se como expansão o aumento no número de registradores 
aumentando a capacidade de processamento do computador. 
10 CONCLUSÃO 
No âmbito educacional, no ensino de conteúdos relacionados à área de arquiteturade organização de 
computadores, os educadores se utilizam de simuladores, para auxiliar na fixação dos conteúdos, fazendo via 
software a simulação do funcionamento interno do hardware. Durante os anos, identificou-se uma série de 
limitações dessas ferramentas disponíveis de simulação, pelo fato de não detalharem suficientemente como 
se dá o funcionamento interno do computador, principalmente por não expressar esse funcionamento de 
forma interativa para o usuário. Então, devido a estes aspectos negativos com relação aos simuladores 
utilizados, nasceu a proposta de desenvolvimento de um simulador de um computador simples, cujo objetivo 
seria resolver as questões para as quais os softwares existentes não eram satisfatórios. 
Este trabalho apresentou o desenvolvimento de um simulador de um computador simples, baseado 
na arquitetura de von Neumann, iniciando pelos conceitos teóricos relacionados ao tema até o próprio 
desenvolvimento da aplicação. Entre os aspectos teóricos envolvidos, são abordados o modelo original 
definido por Neumann e um esquema básico, baseado no mesmo conceito de von Neumann, mas exposto de 
uma forma mais abstrata, que é utilizado nas literaturas atuais. Partindo desse esquema atual, onde são 
representados a CPU, a memória principal, barramentos e dispositivos de entrada e saída, como os 
componentes essenciais da arquitetura interna da máquina, foi dada ênfase a cada um desses componentes de 
forma particular, explorando seus conceitos e suas funcionalidades, bem como a interação desses 
dispositivos. Após essas definições iniciais quanto aos aspectos físicos a serem representados no sistema, ou 
seja, os componentes do hardware que são integrantes da arquitetura interna da máquina, são expostos no 
artigo os conceitos referentes ao software do baixo nível que é executado provendo a operacionalização 
destes componentes. Para tal foi abordada a linguagem de montagem, implementada no sistema de modo que 
o usuário possa inserir programas executáveis no simulador. 
Quanto às limitações analisadas nos software existentes e o que se deseja que o sistema proposto 
atenda, verificou-se que de uma forma geral as duas ferramentas apresentadas, Neander e K&S, simulam de 
uma forma correta o funcionamento do hardware e a interação entre os dispositivos. O problema está na 
forma de como é apresentada a simulação e nas funcionalidades oferecidas. O simulador K&S é um 
simulador gráfico, funciona de forma correta, mas possui duas deficiências significativas: em primeiro lugar 
a sua interface que se distancia um pouco da forma conceitual do hardware do computador. O modo como 
são apresentados os dispositivos apresenta 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 sob o foco didático é um aspecto crítico para sua utilização. Sobre o 
Neander pode-se compartilhar quanto à forma gráfica as mesmas considerações feitas ao K&S, sendo que o 
simulador Neander apresenta menos informações que o K&S quanto ao layout do hardware do computador. 
O diferencial do Neander é que pode-se salvar os programas inseridos no sistema para uma futura 
manipulação. Após a análise dos sistemas existentes, o sistema desenvolvido foi projetado contendo as 
funcionalidades analisadas como negativas nos software existentes, com intuito de atender as estes 
requisitos. 
Na seção referente ao desenvolvimento do sistema, um tópico abordou a descrição das 
funcionalidades implementadas, onde foram propostas uma série de melhorias em relação aos software hoje 
utilizados. Em outro tópico, denominado de modelo conceitual, pode-se visualizar como o sistema foi 
projetado, como estão dispostos os elementos e suas interações. A partir dessa ilustração pode-se verificar 
como forma abstrata como se dá o funcionamento do hardware do computador, como se dá a comunicação 
entre os seus elementos. Dando continuidade ao desenvolvimento, foi exposto o conjunto de instruções 
disponibilizadas ao usuário para construção de seus programas, programas esses que são descritos utilizando 
sua linguagem própria, que é abordada em um tópico especifico neste artigo. 
Para prover e apresentar uma segura validação do sistema, foi desenvolvido um instrumento de 
avaliação, composto por uma série de questões. Como resultado, obteve-se uma avaliação quanto à satisfação 
do usuário na utilização do sistema. A avaliação foi realizada diretamente com o público alvo, os alunos dos 
21 
cursos de graduação, e foram obtidos resultados satisfatórios quanto à análise feita do sistema. Os alunos 
usaram o sistema, e como nota geral o simulador obteve média 9 e bons comentários por parte dos usuários. 
Finalizando, foi exposto um tópico específico tratando sobre a possibilidade de continuidade deste projeto e 
expansão deste sistema. Por ser um domínio muito abrangente, este trabalho atende uma série de requisitos, 
mas tem-se ainda margem para expansão. Para tal, foram expostos alguns itens que podem ser melhor 
estruturados ou inovados, cujo resultado será um software simulador mais robusto e sofisticado, cujo 
resultado final é propiciar aos usuários uma forma alternativa de estudo dos temas relacionados ao hardware 
e ao funcionamento interno do computador, utilizando de uma ferramenta capaz de simular visualmente o 
fluxo de operação do hardware na execução de diferentes programas. 
O tema deste projeto é bastante amplo, pois trata de uma área com um conteúdo abrangente. O 
projeto proposto neste artigo trata vários aspectos sobre o tema, mas ainda tem-se a possibilidade de avanços 
com relação à sua implementação, expandindo seus recursos e funcionalidades ou melhorando os existentes, 
citam-se os itens: adequações no processo de análise de erros, agregação de novas instruções, novos tipos de 
variáveis, implementação de dispositivos de entrada/saída, implementação de instruções imediatas, aumento 
do número de registradores, conforme foi exposto no tópico referente a Trabalhos Futuros. 
Este projeto será doado para a Universidade Luterana do Brasil e seu código-fonte poderá ser 
integralmente utilizado para continuidade do projeto, estudos e novas implementações. 
REFERÊNCIAS 
BOOCH, Grady; RUMBAUGH, James; JOCABSON, Ivar. UML – Guia do Usuário. Ed. Campus. 1ª 
Edição, 2000. 
BRAUGHT, Willian Grant; Site pessoal. Disponivel em: 
<http://users.dickinson.edu/~braught/>. Acesso em: 27 set. 2010. 
BRAUGHT, Willian Grant; Site K&S. Disponivel em: 
<http://users.dickinson.edu/~braught/kands/kands.html/>. Acesso em: 27 set. 2010. 
NETBEANS.ORG. Disponível em <http://netbeans.org/>. Consultado em Junho/2011. 
PATTERSON, David A.; HENNESSY, John L. Organização e Projeto de Computadores. Rio de Janeiro: 
Ed. LTC. 2ª edição, 2000. 551p. 
PREECE, Jony; ROGERS, Yvonne; SHARP, Helen; BENYON, David; HOLLAND, Simon; CAREY, Tom. 
Human-Computer Interaction. England: Ed. Addison-Wesley, 1994.763p. 
STALLINGS, W. Arquitetura e Organização de Computadores. São Paulo: Ed. Prentice Hall 5ª Edição, 
2003. 786p. 
SUN MICROSYSTEMS. Disponível em <http://www.java.com/>. Consultado em Junho/2011. 
TANENBAUM, Andrew S.Organização Estruturada de Computadores. Rio de Janeiro: Ed. LTC 4ª 
Edição, 2001. 398p. 
WEBBER, Raul Fernando. Fundamentos de Arquitetura de Computadores. Porto Alegre: Ed. Sagra 
Luzzato. 2ª Edição, 2001. 299p. 
ZANUZ, A.; MARCHIORO , G.F.; PETRY, A. Arquitetura e Organização de Computadores I. Caderno 
Universitário nº 353. Canoas. Ulbra, 2006. 59p. 
 
 
 
 
22 
APÊNDICE A: MODELO DE ARQUITETURA 
 
 
23 
 
APÊNDICE B: DICIONÁRIO DE TERMOS DO PROJETO 
 
Abrev. Descrição Abrev. Descrição 
ERX Endereço do registrador usado como 
operando X da ULA 
 LRX Load do registrador X usado também para 
armazenar resposta da ULA ou um valor da 
memória 
ERY Endereço do registrador usados como 
operando Y da ULA 
 SM1 Status do Multiplexador 1 
OPULA Operação da ULA SM2 Status do Multiplexador2 
LCP Carga (Load) do Contador de Programa LRS Load do Registrador de Status 
ICP Incremento do Contador de Programa CP Registrador Contador de Programa 
LRI Carga (Load) do Registrador de 
Instrução 
 RI Registrador de Instrução 
LRE Carga (Load) do Registrador de 
Endereço da Memória 
 M1 Multiplexador 1 
LRD Carga (Load) do Registrador de Dados M2 Multiplexador 2 
RE Registrador de Endereço da Memória RD Registrador de Dados da Memória 
END Endereço da memória CS Seletor do Chip (Chip Select) da Memória 
N Flag Negativo Z Zero 
OV Flag Overflow R Resposta da ULA 
R0 Registrador 0 do banco de registradores R1 Registrador 1 do banco de registradores 
R2 Registrador 2 do banco de registradores R3 Registrador 3 do banco de registradores 
X Entrada X da ULA Y Entrada Y da ULA 
ULA Unidade Lógico-Aritmética RS Registrador de Status 
R/W Flag de acesso à memória (R – Leitura / 
W – Escrita) 
 UC Unidade de Controle 
 
 
 
 
 
 
 
 
 
 
 
 
24 
APÊNDICE C: DIAGRAMA DE SEQUÊNCIA 
 
Diagrama de Sequência 
O diagrama ilustrado na figura acima apresenta de forma visual a troca de mensagens realizada pelo 
usuário para colocar um programa em execução. Pode-se visualizar os métodos que são disparados a cada 
interação do usuário, bem como as classes envolvidas. A seguir está uma breve descrição referente a essa 
sequência de passos: 
• CarregarInterface: Atividade realizada pelo usuário que consiste no carregamento na tela das 
interfaces de programação e de simulação. 
• Programar: Atividade realizada pelo usuário que consiste de inserção de um programa no 
simulador, seja inserindo um novo programa ou abrindo um programa já existente, que tenha sido 
previamente salvo. 
• Montar: Atividade realizada pelo usuário e consiste na montagem de um programa previamente 
inserido no computador. 
• AnalisarErros: Este processo consiste na realização do processamento do programa inserido, 
com o objetivo de buscar erros na descrição do programa, com base nas definições na linguagem6 
do sistema. Como resultados da analise, nenhum erro sendo encontrado é disparado o método 
MontarPrograma, caso seja encontrado o erro é mostrado na interface para o usuário. 
• MontarPrograma: Este é um processo interno realizado pelo sistema e consiste da montagem de 
um programa previamente inserido. A definição do processo de montagem foi descrita na sessão 
do Modelo Conceitual. 
• CarregarPrograma: O processo CarregarPrograma é utilizado para carregar um programa no 
computador do simulador, como pré-condição para sua execução é que o programa já tenha sido 
previamente montado. A execução desse método inicia o método CarregarMemória, que será 
descrito a seguir. 
• CarregarMemória: Este método consiste no carregamento de um programa para a memória do 
computador do simulador. O resultado da execução deste método é um programa pronto para ser 
executado no simulador. 
• ExecutarPrograma: Este método consiste em iniciar a execução de um programa no simulador, 
efetivamente iniciar uma simulação. Como pré-condição para a execução deste método é que um 
programa já tenha sido previamente carregado na memória 
 
6 No tópico 6.5 do artigo é abordado os aspectos relativos a linguagem de montagem própria desenvolvida para criação dos programas executados 
pelo simulador. 
 
25 
• APÊNDICE D: AVALIAÇÃO COMPLETA 
 
TÓPICOS DA AVALIAÇÃO MÉDIA 
1 Com relação à sua interface, 
analisando os aspectos descritos 
abaixo: 
1.1 Disposição dos elementos na tela 8,92 
1.2 Design da interface 8,84 
1.3 Cores e ilustrações 8,84 
2 Com relação à visualização dos 
elementos que compõe o 
simulador, analisando o seu 
design: 
2.1 Quantidade de elementos 8,76 
2.2 Organização dos elementos na tela 8,84 
2.3 Organização do sistema quanto aos seus elementos 9,04 
3 Com relação ao entendimento do 
hardware do simulador, 
analisando os seguintes aspectos: 
3.1 Facilidade de entendimento do hardware 8,56 
3.2 Clareza quanto à visualização dos elementos 8,80 
3.3 Quanto a disposição dos elementos na tela 9,04 
3.4 Relacionamento entre os componentes do simulador 
com um computador real 8,92 
4 Com relação a simulação do 
funcionamento do hardware, 
durante a execução de um 
programa, analisando os aspectos 
abaixo: 
4.1 Entendimento quanto ao fluxo de operações do 
hardware 8,72 
4.2 Interações gráficas durante a simulação 9,08 
4.3 Entendimento quanto ao funcionamento da 
simulação 8,92 
4.4 Com relação ao Painel de Status, apresentou clareza 
na visualização 9,24 
4.5 O resultado da simulação atendeu suas expectativas 9,24 
5 Como relação aos recursos 
oferecidos pelo sistema, como 
você avalia os aspectos abaixo: 
5.1 Os recursos oferecidos pelo software são claros 
quanto seu funcionamento 9,00 
5.2 Os recursos disponíveis funcionaram 
adequadamente, conforme foi proposto 9,28 
6 Com relação à Linguagem de 
Montagem definida no simulador, 
analise os seguintes aspectos: 
6.1 Como foi seu entendimento quanto à declaração da 
linguagem 8,72 
6.2 O processo de montagem do programa foi executado 
corretamente 9,52 
6.3 Como relação a verificação de erros no código, foi 
suficientemente informativo 8,76 
7 - . Qual sua avaliação geral com relação ao software ? 9,00

Outros materiais