Vous êtes sur la page 1sur 8

SIMBLER: UM SIMULADOR DE LINGUAGEM DE MONTAGEM DIDTICO

Jos Tarcsio Franco de Camargo jtfc@bol.com.br Faculdade Municipal Prof. Franco Montoro (FMPFM) Rua dos Estudantes, s/n Cachoeira de Cima Caixa Postal: 293 - 13.843-971 Mogi Guau SP Centro Regional Universitrio de Esprito Santo do Pinhal (UNIPINHAL) Guilherme de Oliveira Martins guilherme@gmartins.com.br Faculdade Municipal Prof. Franco Montoro (FMPFM) Patrcia Aparecida Zibordi Aceti patriciazibordi@uol.com.br Faculdade Municipal Prof. Franco Montoro (FMPFM) Centro Regional Universitrio de Esprito Santo do Pinhal (UNIPINHAL) Estfano Vizconde Veraszto estefanovv@gmail.com Faculdade Municipal Prof. Franco Montoro (FMPFM) Jomar Barros Filho jomarbf@uol.com.br Faculdade Municipal Prof. Franco Montoro (FMPFM) Joo Alexandre Bortoloti jabortoloti@uol.com.br Faculdade Municipal Prof. Franco Montoro (FMPFM) Escola Superior de Administrao, Marketing e Comunicao (ESAMC) Universidade Paulista (UNIP)

Resumo: Neste trabalho apresentamos uma ferramenta computacional que pode vir a ser utilizada com alunos das disciplinas de Organizao e Arquitetura de Computadores e Microprocessadores e Microcontroladores em um curso de Engenharia de Computao, Cincia da Computao ou Engenharia Eltrica. Este software foi desenvolvido com base na arquitetura de um processador simples, fundamentado em uma mquina de Von Neumann tpica, comumente estudado e utilizado nas disciplinas mencionadas acima. Todo o projeto fundamentado dentro da concepo de software livre, sendo seu cdigo fonte aberto e disponvel a todos, de forma a contribuir ainda mais para o aprendizado dos alunos nestas disciplinas, alm de poder vir a ser melhorado por seus prprios usurios. Palavras-chave: Linguagem de montagem, Microprocessadores, Sistemas digitais, Ensino de Engenharia.

INTRODUO

Um microprocessador, elemento fundamental da organizao de um computador digital moderno, necessita de um programa para ser devidamente utilizado. Este programa, em ltima instncia, a abstrao de um conjunto de 0s e 1s (denominados bits), que

determina a execuo de tarefas pelo computador. Em um nvel de abstrao imediatamente superior aos bits que programam um microprocessador, temos a linguagem de montagem (ou linguagem assembly) que uma ferramenta de programao comumente utilizada no ensino de conceitos bsicos da organizao e arquitetura de computadores. Assim, praticamente impossvel dissociar o ensino de fundamentos da arquitetura e organizao de um computador digital moderno do ensino da linguagem de programao assembly. Diferentemente do que o ocorre nas chamadas linguagens de alto nvel, em assembly h uma associao direta entre a linguagem de montagem e a da mquina, no havendo, portanto, uma compilao, mas sim a montagem. A transformao do cdigo de montagem para o da mquina efetuado pelo montador (assembler), sendo que as diferentes arquiteturas de computador possuem diferentes padres de montagem. O ensino de programao em linguagem assembly, contudo, tem se apresentado extremamente difcil, dadas as limitaes desta linguagem em si, alm das dificuldades apresentadas pelos alunos para abstrair conceitos necessrios ao aprendizado de assembly. Muitas vezes os alunos preferem simplesmente ignorar estes conceitos fundamentais, o que gera lacunas em sua formao e implica na dificuldade para assimilao de outros contedos. Face a estas dificuldades, este grupo de pesquisadores decidiu desenvolver um simulador para esta linguagem que viesse a suprir, parcialmente, as deficincias constatadas no aprendizado. Ressaltando que as bases conceituais da operao de um computador permitem que novas tecnologias possam ser desenvolvidas de maneira consistente, reduzindo a necessidade da dependncia externa de tecnologia. Assim, o projeto de criao do simulador de linguagem de montagem apresentado neste trabalho nasceu da necessidade de se utilizar uma ferramenta de apoio programao de microprocessadores nas aulas das disciplinas de Organizao e Arquitetura de Computadores e Microprocessadores e Microcontroladores. Esta ferramenta deveria ser simples e didtica, de forma a ser plenamente aproveitada por alunos iniciantes nesta rea, porm abrangente o suficiente de forma a cobrir as funcionalidades de um processador fundamentado em uma mquina de Von Neumann, que serve como base para o ensino de contedos destas disciplinas. De forma a tornar o simulador acessvel ao maior nmero possvel de alunos, estes pesquisadores abraaram o seu desenvolvimento dentro do escopo do software livre, estando todo o cdigo deste projeto disponvel para consulta e modificaes. Assim, espera-se que os alunos, alm de assimilarem contedos usando o simulador, possam tambm aprender estudando o cdigo de programao do mesmo. Alm disso, sendo este um projeto de cdigo aberto, espera-se tambm que os prprios alunos e outros usurios venham a gerar melhorias neste software, contribuindo ainda mais para o estudo destas disciplinas de engenharia.

FUNDAMENTOS TERICOS

O modelo fundamental para a organizao de um computador simples requer a presena dos seguintes elementos: uma unidade central de processamento (a CPU ou o microprocessador propriamente), um mdulo de memria, dispositivos de entrada e sada e um barramento de comunicao interna. A Figura 1 apresenta um modelo bsico para um computador simples, conforme proposto em (TANENBAUM, 2007), frequentemente estudado nas disciplinas mencionadas anteriormente.

Figura 1 Modelo bsico para a organizao de um computador simples. Neste tipo de organizao, a Unidade Central de Processamento o bloco responsvel pelo controle da execuo de todas as tarefas realizadas pela mquina, realizando operaes aritmticas e lgicas e organizando todo o fluxo de informaes que passam pelo computador. A memria principal, por sua vez, constitui o elemento onde so armazenados os programas a serem executados alm dos dados em processamento de uma forma geral. As unidades de entrada e sada de dados so responsveis pela comunicao da mquina com o meio externo. Finamente, temos um barramento de comunicao, que responsvel por promover a integrao destes elementos. O foco deste projeto encontra-se no microprocessador, o qual ser apresentado na subseo seguinte. Detalhes bsicos sobre a organizao de um computador podem ser encontrados em (DALTRINI et al., 1999), (TAUB, 1984) e (TOCCI, 2003). Por sua vez, detalhes avanados sobre a organizao e arquitetura de computadores podem ser encontrados em (STALLINGS, 2002) e (TANENBAUM, 2007) . 2.1 Organizao bsica de um microprocessador

De forma simplificada, a organizao de um microprocessador deve dispor de, pelo menos, os seguintes elementos: uma Unidade de Controle (UC), uma Unidade Aritmtica e Lgica (ULA), registradores de dados em geral e um barramento de comunicao interno. A Figura 2 apresenta a organizao bsica de uma CPU, conforme proposto em (STALLINGS, 2002) e (DALTRINI et al., 1999).

Figura 2 Organizao bsica de um microprocessador. Nesta estrutura, a Unidade de Controle tem por funo bsica controlar a CPU como um todo, organizando o fluxo de informaes e a execuo de tarefas pelos outros blocos da CPU. Como elementos notveis da UC de uma CPU temos o Registrador de Instrues (RI), que o elemento responsvel pela decodificao das instrues recebidas pela UC, e o Registrador Apontador de Instrues (AI), que o elemento responsvel pelo endereamento das instrues de um programa que se encontram na memria principal de um computador. A Unidade Aritmtica e Lgica tem por objetivo realizar operaes aritmticas e lgicas. Os tipos de operaes dependem da arquitetura da CPU mas, essencialmente, devem ser previstas as operaes aritmticas de soma, subtrao, multiplicao e diviso, pelo menos, sendo tambm previstas, no mnimo, as operaes lgicas E, OU e a negao ou complemento binrio. As operaes realizadas pela ULA afetam o contedo do Registrador de Estado (RE), composto basicamente pelos sinalizadores binrios (ou flags) Z (ou Zero), S (ou Sinal) e O (ou Overflow). Estes sinalizadores normalmente permanecem em 0, mudando de valor de acordo com a ocorrncia dos seguintes eventos: operao aritmtica ou lgica resultando em 0: o flag Z assume valor 1; operao aritmtica ou lgica resultando em um valor negativo: o flag S assume o valor 1; operao aritmtica resultando em um valor que ultrapassa a capacidade de armazenamento de um registrador (overflow): o flag O assume valor 1.

Algumas arquiteturas ainda apresentam um sinalizador para pedidos de interrupo, normalmente denominado flag I, o qual foi deixado de lado neste projeto por motivos de simplificao do simulador. O conjunto de registradores de uso geral tem por objetivo armazenar temporariamente dados em processamento pela CPU ou em trnsito entre esta e a memria. Finalmente, o barramento interno da CPU tem por objetivo interconectar todos os elementos nela presentes. Na organizao proposta na Figura 2 no feita referncia ao registrador Apontador de Pilha, o qual, para simplificar o simulador proposto, no foi implementado at o presente momento. A subseo seguinte descreve os detalhes da linguagem assembly utilizada para a programao de uma CPU com esta estrutura.

2.2

A linguagem de montagem para programao de um microprocessador bsico

Esta subseo no pretende se estender em detalhes especficos da linguagem de programao assembly, mas apenas apontar as caractersticas fundamentais necessrias para a concepo de um software de simulao como o desenvolvido neste trabalho. O conjunto de instrues de uma determinada CPU est intimamente associado arquitetura desta. No caso da arquitetura bsica proposta neste artigo, um conjunto mnimo de instrues assembly deve conter: instrues de carregamento de registradores do tipo load e store; instrues aritmticas: soma, subtrao, multiplicao, diviso, incremento e decremento; instrues lgicas: E, OU e negao instrues de desvio: o incondicional; o condicional: desvio em caso (ou no) de zero, sinal ou overflow; instruo de parada. Este conjunto de instrues assembly deve vislumbrar, necessariamente, os modos de endereamento direto (quando valores a serem carregados em registradores so diretamente referenciados) e indireto (quando o contedo de uma clula de memria indiretamente referenciado atravs de seu endereo). Algumas referncias interessantes para apoio ao ensino da linguagem de programao assembly so (BLUM, 2005) e (MANZANO, 2004). A seo seguinte apresenta a implementao do simulador proposto com base nos fundamentos descritos nesta seo. 3 IMPLEMENTAO

Conforme proposto no incio deste artigo, a implementao desejada para este simulador deveria ser de fcil uso pelos alunos, podendo seu cdigo fonte ser livremente estudado pelos mesmos. De forma a atingir este objetivo, a ferramenta de programao escolhida para o desenvolvimento deste projeto foi o pacote de desenvolvimento freeware NETBEANS, sendo o cdigo do simulador escrito na linguagem de programao JAVA. A utilizao da linguagem de programao JAVA para o desenvolvimento deste software ainda traz a vantagem de o mesmo vir a tornar-se multiplataforma, podendo ser utilizado em qualquer computador que disponha apenas de uma mquina virtual JAVA. A Figura 3 apresenta a interface grfica implementada para este simulador.

Figura 3 Interface do SIMBLER. Conforme pode ser observado, esta interface apresenta uma rea de rascunho, na qual o aluno pode escrever um programa em linguagem de montagem. Esta rea procura simular a memria principal de um computador simples, sendo organizada em linhas seqenciais, onde cada linha pode comportar at dois bytes (um byte para o cdigo da operao e um byte para o operando da instruo). O programa escrito pelo usurio pode ser salvo em um arquivo de nome definido pelo mesmo, com extenso .sbl (trata-se, de fato, de um arquivo de texto comum). Outro recurso didtico bastante interessante da rea de rascunho consiste na disponibilizao, para o usurio, de um atalho para ajuda. Enquanto digita um programa, caso o programador

pressione simultaneamente as teclas Control e Espao ser aberta uma janela de ajuda contendo todas as instrues disponveis ao usurio. Acima da rea de rascunho h um conjunto de botes que podem ser utilizados pelo programador para executar e interromper a execuo do programa a qualquer tempo. Logo acima da rea de rascunho h uma barra deslizante atravs da qual o usurio poder definir a velocidade com que seu programa ser executado. Poder ser executado rapidamente, caso o usurio queira explorar a velocidade de trabalho da CPU, ou lentamente, caso o usurio deseje visualizar detalhadamente a execuo de cada instruo do programa. H tambm a opo de executar o programa passo a passo, de tal forma que o aluno possa acompanhar a execuo de cada instruo, aprendendo assim como cada comando na linguagem de montagem funciona individualmente. Os dados (operandos) de entrada e sada podem ser visualizados nos formatos decimal, hexadecimal e binrio, o que acaba por contribuir ainda mais com o aprendizado do aluno, pois ele poder vir a dominar a representao e converso entre bases de sistemas de numerao com este recurso. Se o usurio digitar os dados em notao binria, por exemplo, atravs dos recursos da interface estes dados podero ser transformados automaticamente em outra base (hexadecimal, por exemplo). Da estrutura fsica do microprocessador o usurio poder visualizar os registradores de uso geral (AX, BX, CX e DX), os flags do registrador de estado (Z, S e O) e o registrador apontador de instrues (PC). Atravs destas informaes o usurio poder analisar com detalhes todos os eventos decorrentes da execuo de seu programa. 5 CONCLUSES GERAIS

Este software foi utilizado como ferramenta de apoio s aulas da disciplina Microprocessadores e Microcontroladores do Curso de Cincia da Computao da Faculdade Municipal Professor Franco Montoro. Embora no seja possvel quantificar com exatido o quanto este simulador contribuiu para o aprendizado dos alunos, pode-se afirmar com certeza que o mesmo foi bem recebido por eles e exaustivamente utilizado, sendo utilizado inclusive fora do ambiente da sala de aula/laboratrio. Embora at o momento o cdigo do simulador no tem sido explorado pelos alunos, principalmente devido ao curto intervalo de tempo entre sua implementao e seu uso em sala de aula, foi notada uma grande curiosidade entre os alunos em relao aos detalhes da construo do simulador, que envolveram diversos conceitos previstos em um curso de computao. Por se tratar de um software que simula uma linguagem de baixo nvel (o assembly), que foi escrito em uma linguagem de alto nvel (o JAVA), h uma interessante interdisciplinaridade entre temas relevantes na rea da computao. A implementao em JAVA deve contribuir significativamente para a disseminao deste simulador, uma vez que a nica exigncia para uso do mesmo a presena da mquina virtual JAVA no computador onde o software ser utilizado. Assim, considerando que esta mquina virtual j est presente na maioria dos computadores (independente do sistema operacional utilizado), esperado que o uso deste simulador seja praticamente transparente: bastar baix-lo para utiliz-lo. A disponibilizao do cdigo aberto, conforme j mencionado, tem dois propsitos fundamentais: permitir que os alunos conheam detalhadamente o software que esto utilizando e, inclusive, promovam mudanas no mesmo que venham a torn-lo mais completo e didtico, embutindo mais recursos e tornando sua interface mais amigvel.

REFERNCIAS BIBLIOGRFICAS

BLUM, Richard. Professional Assembly Language. Wiley Publishing, Inc., 2005. DALTRINI, Beatriz Mascia; JINO, Mrio e MAGALHES, Lo Pini. Introduo a Sistemas de Computao Digital. So Paulo: Makron Books, 1999. MANZANO, Jos Augusto N. G. Fundamentos em programao assembly para computadores IBM-PC a partir dos microprocessadores Intel 8086/8088. 1.ed. So Paulo: rica, 2004. STALLINGS, William. Arquitetura e Organizao de Computadores. 5.ed. So Paulo: Prentice Hall, 2002. TANENBAUM, Andrew S. Organizao Estruturada de Computadores. 5.ed. So Paulo: Pearson Prentice-Hall, 2007. TAUB, Herbert. Circuitos Digitais e Microprocessadores.So Paulo: McGraw-Hill do Brasil, 1984. TOCCI Ronald J. & WIDMER, Neal S. Sistemas Digitais Princpios e Aplicaes. 8.ed. So Paulo: Pearson Prentice-Hall, 2003.

SIMBLER: A DIDACTIC ASSEMBLY LANGUAGE SIMULATOR

Abstract: In this work we present a computational tool that may be used with students from the disciplines of "Computer Organization and Architecture" and "Microprocessors and Microcontrollers" in a course of Computer Engineering, Computer Science or Electrical Engineering. This software was developed based on a simple processor architecture, founded on a typical von Neumann machine, commonly studied and used in the disciplines mentioned above. The entire project is based within the concept of free software, and its source code is open and available to all, in order to further contribute to the learning of students in these disciplines, and also being able to be improved by its own users. Key-words: Assembly language, Microprocessors, Digital systems, Engineering teaching.

Vous aimerez peut-être aussi