Desenvolvimento Cooperativo de um Ambiente de Apoio ao Ensino de Conceitos Básicos de Hardware e Software

June 12, 2017 | Autor: Mauro Mattos | Categoria: Computer Architecture, OPERATING SYSTEM, Software Tool, Bottom Up, Hardware architecture
Share Embed


Descrição do Produto

Desenvolvimento Cooperativo de um Ambiente de Apoio ao Ensino de Conceitos Básicos de Hardware e Software Mauro Marcelo Mattos, MSc

Antônio Carlos Tavares

{mattos,tavares}@furb.rct-sc.br FURB - Universidade Regional de Blumenau - Departamento de Sistemas e Computação

Resumo

O presente artigo descreve o estágio atual de desenvolvimento do projeto VXt – Virtual XT; uma ferramenta de apoio ao ensino de disciplinas de Arquitetura de Computadores e Sistemas Operacionais. O projeto vem sendo desenvolvido pelos alunos do curso de Bacharelado em Ciências da Computação da FURB Universidade Regional de Blumenau e caracteriza-se por implementar em software a arquitetura do processador Intel 8086, de modo a permitir aos alunos obterem uma visão bottom-up tanto em termos de arquitetura de harwdare quanto em termos de arquitetura de sistemas operacionais. Abstract

This work describes the VXt – Virtual XT project – the implementation of a Intel 8086 processor as a software tool. The main goal is to develop a software to be used as a complementary teach tool in a Computer Architecture and Operating Systems classes at FURB - University of Blumenau to enable the students a bottom-up approach in terms of hardware architecture and operating systems.

Introdução A enorme evolução tecnológica que presenciamos atualmente têm nos colocado frente a novos problemas, mas também nos propiciado recursos para o desenvolvimento de soluções inovadoras que outrora talvez não fossem possíveis. Segundo [LEV90], está ocorrendo uma evidente metamorfose do funcionamento social, das atividades cognitivas e das representações de mundo. A evolução das técnicas pode ser considerada como um agente destas transformações na medida em que trazem consigo novos meios de conhecer o mundo, de representar e de transmitir estes conhecimentos. Com o processo crescente no uso de tecnologias aplicadas à educação, é importante ressaltar não só a contribuição dos recursos computacionais existentes, mas também, a necessidade de estudar-se a forma ideal para sua aplicação. Todos tem os mesmos instrumentos para chegar ao conhecimento, mas não os utilizam com a mesma intensidade. Normalmente os processos educacionais baseiam-se , quase que exclusivamente, no desenvolvimento da inteligência lingüística e da lógico-matemática, deixando de lado as outras formas de acesso ao conhecimento. A aprendizagem é um processo no qual experiências fomentam modificação do comportamento e aquisição de hábitos. Segundo [WEC93], Piaget ao estudar a gênese do desenvolvimento da inteligência, demonstrou a importância da maturação do sistema nervoso, da ação sobre os objetos e dos fatores sociais como variáveis influenciantes na compreensão do processo intelectual. Em seus estudos, demonstrou como os processos de assimilação e acomodação de novos conhecimentos se incorporam à estrutura do pensamento. É justamente pela abordagem abstrata no ensino de algumas disciplinas-chave no curso de Computação que justifica-se a pesquisa e o desenvolvimento de ferramentas e/ou aplicações tecnológicas para auxiliar no processo de aprendizado. Os aspectos cognitivos relacionados a captação de conteúdos comprovam a eficácia de processos que relacionam a ferramenta computador em benefício da produtividade intelectual. A ausência de uma ferramenta didática que permita exemplificar tais conceitos, conduziu a especificação do VXt.

Caracterização do problema

O currículo do curso de Ciências da Computação da Universidade Regional de Blumenau, estabelece como obrigatórias as disciplinas de Arquitetura de Computadores (2o Semestre) e Sistemas Operacionais (4o semestre). O estudo de Sistemas Operacionais pressupõe o conhecimento de conceitos básicos de Arquitetura de Computadores. Observando-se o resultado dos trabalhos realizados na disciplina de Sistemas Operacionais, verificou-se que havia uma deficiência no entendimento de como realmente as ações eram executadas por um processador, e quais as implicações disto em termos de arquitetura de um sistema operacional. A ausência de uma ferramenta didática que permitisse exemplificar os conceitos de modo mais claro, estimulou o desenvolvimento do VXt. Além disso, analisando-se o perfil dos alunos, verificou-se que em sua maioria, eram oriundos do 2o Grau, e portanto, possuiam conhecimentos abstratos sobre áreas científicas (matemática, física, biologia, etc.) . Porém, ao depararem-se com os conceitos apresentados nas disciplinas em questão, geralmente encontravam dificuldades em abstrair detalhes de implementação e concentrar-se nos conceitos propriamente ditos. Em função disto, iniciou-se um projeto em sala de aula, com o intuito de construir-se uma ferramenta que permitisse suprir as dificuldades acima citadas. Esta ferramenta deveria implementar um processador, a partir do qual fosse possível demonstrar-se conceitos básicos das 2 disciplinas em questão. O Processador Virtual

Para a escolha do processador foram considerados os seguintes aspectos: a) o processador a ser implementado deveria ser de conhecimento dos alunos, tendo em vista evitar um esforço a mais para conhecer um novo conjunto de instruções b) o processador alvo, deveria possuir todo um aparato de ferramentas de desenvolvimento tais como, compiladores, montadores, depuradores e ambientes de desenvolvimento adequados, para evitar o esforço desnecessário na construção de tais ferramentas;

c) o processador alvo deveria executar um sistema operacional que fosse de conhecimento do público-alvo, tendo em vista evitar o esforço desnecessário (em função dos objetivos do trabalho) no aprendizado da utilização do mesmo; d) deveria haver disponibilidade de literatura tendo em vista permitir a implementação do conjunto de instruções do processador. A partir destes requisitos, selecionou-se o processador Intel 8086, tendo em vista que: • ele atendia ao requisito (a) acima descrito na medida em que os alunos da disciplina de arquitetura de computadores geralmente desenvolvem pequenas aplicações utilizando a linguagem assembly deste processador; • ele atendia ao requisito (b), na medida em que há toda uma estrutura que suporta o desenvolvimento de aplicações para a plataforma Intel; • ele atendia ao requisito (c ), na medida em que o sistema operacional MS-DOS, já é de conhecimento dos alunos, não necessitando um esforço de treinamento adicional para esta plataforma; • a biblioteca da Universidade dispunha (e dispõe) de literatura suficiente para permitir aos alunos o desenvolvimento da referida aplicação. A metodologia de desenvolvimento

Adotou-se uma metodologia de aprendizado ativa, na qual os conceitos básicos seriam implementados gradualmente, e a medida em que o projeto avançasse, maiores níveis de abstração seriam obtidos, sem a perda do que já foi assimilado. Um requisito importante foi o de que a cada semestre, os novos alunos incorporados ao projeto teriam acesso a toda documentação (especificação + código-fonte da aplicação) disponível de tal forma a revisar o que já havia sido construído e continuar o desenvolvimento do projeto. Paralelamente ao desenvolvimento do plano de ensino das respectivas disciplinas, os alunos foram sendo engajados ao projeto de implementação, de tal forma a desencadear um processo de reflexão e tomada de consciência de seu próprio processo de aprendizagem

O desenvolvimento da primeira versão

Uma vez que o principal objetivo na etapa inicial do projeto era a obtenção de uma primeira versão do processador, estabeleceu-se que a linguagem alvo para a implementação da aplicação poderia ser escolhida pelas equipes. Algumas equipes desenvolveram a aplicação utilizando a linguagem Pascal e o ambiente de desenvolvimento Turbo Pascal da Borland. Outras equipes desenvolveram a aplicação utilizando o ambiente de desenvolvimento Delphi (também da Borland). Após uma avaliação das versões finais entregues pelas equipes, optou-se pela continuidade do projeto a partir da implementação em Pascal, tendo em vista que nem todos os alunos do semestre regular em que ocorre a disciplina de Sistemas Operacionais tem conhecimento de Delphi, mas, todos tem conhecimento de Pascal. Características da primeira versão

Na primeira versão era possível a carga e execução de código binário nativo (gerado a partir de um programa auxiliar) em qualquer posição do espaço de endereçamento de 64Kb. Entretanto o código necessitava ser montado “a mão” , dado que não havia sido implementado um loader de arquivos executáveis. Uma vez carregado , era possível a execução passo-a-passo de cada instrução, a visualização do conteúdo dos registradores, da pilha de execução e da área de dados. Na verdade, esta primeira versão , apresentava uma interface muito semelhante àquela do programa Turbo Debugger da Borland. Foram obtidas várias versões do VXt. Algumas em pascal, outras em Delphi. A liberdade na escolha do ambiente de desenvolvimento levou em consideração que o objetivo principal desta primeira fase do projeto era a obtenção de uma versão executável do processador virtual. A escolha de um ou outro ambiente de desenvolvimento pelos alunos deveu-se ao domínio do mesmo. As versões em Pascal apresentaram como característica principal, um maior número de instruções implementadas e efetivamente testadas, e uma interface de comunicação com o usuário em modo caracter. O tamanho do código fonte girou em torno de 3000 linhas. As versões em Delphi apresentaram como característica principal, uma interface de comunicação com o usuário mais rebuscada (em função dos recursos disponibilizados pelo ambiente ) , mas um menor número de

instruções efetivamente depuradas. O tamanho do código fonte girou em torno de 6000 linhas. Avaliação dos resultados preliminares

Como resultado da implementação do VXt, pode-se constatar vários aspectos relacionados a questão de aprendizado, quais foram: •

metodologia de desenvolvimento : os alunos do semestre regular ainda não haviam tido contato com as técnicas de desenvolvimento de aplicações (leia-se metodologias de desenvolvimento de sistemas). Portanto, durante o período de desenvolvimento da aplicação, houve necessidade de reorganização dos projetos (por parte dos alunos) tendo em vista os já conhecidos problemas de desenvolvimento de aplicações (que culminaram com a ênfase de Engenharia de Software). Deve-se salientar que as aplicações produziram código fonte (entre 3000 e 6000 linhas) cujo tamanho e complexidade já atingiram um patamar que pode ser classificado como não trivial em termos de desenvolvimento e depuração (considerando-se o perfil das equipes envolvidas). Portanto, apesar de não possuírem muita experiência em desenvolvimento, os alunos já tiveram contato com os problemas que serão desenvolvidos em semestres posteriores , nas disciplinas da área de Eng. de Software. Esta experiência anterior permitirá aos mesmos um melhor entendimento dos conceitos a serem desenvolvidos nesta disciplina.



a ausência de uma ferramenta de controle de versões e de desenvolvimento em equipes, também gerou problemas durante o desenvolvimento da aplicação, fazendo com que os alunos verificassem na prática os problemas associados ao desenvolvimento de aplicações em workgroup;



durante o desenvolvimento da aplicação foram fixados na prática os conceitos básicos de aritmética binária (e hexadecimal), na medida em que todas as operações realizadas pelo processador são efetivamente binárias;



também foram utilizados recursos de Pascal que, poderiam ser considerados como avançados para os alunos do semestre regular, na medida em que houve a necessidade de utilização de código assembly in-line, o uso de definições absolute e a utilização de units (conduzindo a modularização do sistema) ;



ficou evidente por parte dos alunos a necessidade de documentação do projeto e uso de padrões de escrita de código fonte (indentação, nomes de variáveis, uso de variáveis locais/globais, ...) , uma vez que o número de componentes das equipes era relativamente grande (5 integrantes) e haviam problemas quando os módulos desenvolvidos por cada integrante tinham que ser agrupados para gerar a versão final.

O desenvolvimento das versões posteriores

Posteriormente a liberação da primeira versão, o projeto foi dividido em frentes de trabalho, as quais foram alocadas nas turmas de acordo com o grau de dificuldade e de condições de aprendizado exigidas. o

As turmas de 2 semestre (Arquitetura de Computadores) passaram a utilizar o VXt como ferramenta auxiliar ao estudo dos conceitos básicos da mesma. Já nas disciplinas de Sistemas Operacionais adotou-se a estratégia de depuração e desenvolvimento gradual de novos módulos. Assim, a cada início de semestre letivo, as turmas recebem a versão desenvolvida no semestre anterior, e como atividade de “ambientação”, são incumbidas de executar aplicações com a finalidade de depuração do código implementado. Como atividade de “contribuição”, na fase final do semestre, as turmas são engajadas no desenvolvimento de novos módulos tendo em vista agregar novas funcionalidades a versão em uso. Esta atividade além de fixar os conceitos anteriormente desenvolvidos (arquitetura, aritmética binaria, etc.) também introduz um novo nível de dificuldade na medida em que os alunos deverão aprender a “realizar atividades de manutenção” em código escrito por outras pessoas. Novamente a questão da Engenharia de Software volta a tona. Tendo em vista caracterizar mais claramente o ambiente VXt como ferramenta didática, a seguir são apresentadas as características principais da versão a atual e realizada a associação entre a característica implementada e a aplicabilidade didática da mesma. Apresentação da versão atual

Tendo em vista que, um dos objetivos da proposta VXt é o de permitir ao aluno manipular código executável gerado pelos compiladores da máquina real, a implementação do hardware está buscando, na medida do possível ( e limitado em determinadas situações a qualidade e disponibilidade de informações técnicas precisas) , aproximar-se com máxima fidelidade à implementação do hardware real. O VXt, nesta versão implementa praticamente todas as instruções de um processador 8088/86, exceto aquelas utilizadas para acesso ao espaço de endereçamento de entrada/saída, tais como: IN,OUT, WAIT, TEST. Entretanto, visto que as demais instruções foram implementadas, torna-se possível a execução de uma variedade de

programas, que obedeçam as restrições relacionadas na seção Restrições. Em função disto, sua aplicabilidade torna-se eminentemente didática, na medida em que é possível utilizá-lo para o ensino de conceitos básicos de linguagem de programação assembly, conceitos de hardware e alguns conceitos básicos de sistemas operacionais. Características técnicas do VXt •

Possui uma interface com o usuário (fig. 1) bem mais amigável que os tradicionais programas correlatos tais como: Turbo Debugger (Borland), CodeView e Debug (Microsoft) entre outros; • Permite a análise por parte do aluno, do opcode da instrução sendo executada; •

Apresenta informações sobre o passo de relocação de arquivos .EXE tanto a nível de header quanto a nível de tabela de relocação;



Permite a manipulação de arquivos binários puros, o que permite a construção de estruturas muito simples para teste de algum conceito/instrução sem a necessidade de elaboração de um programa completo;



Permite a alteração da base numérica para representação das informações na tela, sendo possível optar-se por: decimal, hexadecimal e binário;



Apresenta um registro (log) da seqüência de execução realizada, de tal forma que o aluno pode analisar o fluxo de execução de um determinado programa ou rotina, mesmo após o término da execução;



A medida em que instruções do tipo INT são detectadas, as mesmas são filtradas e informações sobre as mesmas apresentadas em uma janela específica, sendo possível ao aluno analisar efetivamente o que ocorre quando um programa está em execução; • Apresenta dicas explicativas (hints) sobre os conceitos teóricos que sustentam todo o funcionamento da CPU (apesar da versão atual ainda não contemplar todos os hints possíveis); •

Identifica quais são os registradores de referência quando o aluno clica na área de dados, na área de código e na área de pilha, induzindo-o ao entendimento da função dos registradores de segmento e deslocamento;

A seguir são destacados alguns dos tópicos acima relacionados em termos de aplicação didática.

O mecanismo de busca e execução de instruções

A filosofia de funcionamento de um processador é um processo relativamente simples e consiste basicamente de 2 fases: uma fase de busca da próxima instrução a ser executada e, uma fase de execução da mesma. A estas fases, dá-se o nome de ciclo de fetch e execute, respectivamente. No VXt, este mecanismo pode ser identificado através da análise do código fonte(disponível ao aluno). O acesso a memória é realizado através da chamada ao procedimento RDMSegOfs(CS,IP) o qual implementa uma busca ao registrador de dados da memória informando-se o endereço a ser informado ao registrador de endereços da memória (neste caso apontado pelo conteúdo dos registradores CS e IP ). Uma vez obtida a instrução a ser executada, o registrador IP é incrementado passando a apontar para o próximo byte na memória (o qual pode ser a próxima instrução a ser executada ou, o complemento da instrução atual O mecanismo de tratamento de interrupções

Interrupções e exceções são os dois mecanismos usados para interromper a execução de um programa. Exceções são eventos síncronos que constituem-se em respostas do processador a condições detectadas durante a execução de uma instrução, tais como: tentativa de divisão por zero, ou tentativa de execução de um código de instrução (ou opcode) inválido. Interrupções são eventos assíncronos disparados por dispositivos externos para solicitar atendimento do processador. Quando o tratamento da interrupção termina, uma instrução IRET é usada para retornar o controle ao ponto original , ou seja, para carregar novamente o conteúdo dos registradores CS, IP e FLAGS com seus valores anteriores a ocorrência da interrupção. A figura 1 apresenta o trecho de código do simulador que trata um sinal de interrupção. Como pode-se observar, na realidade para o hardware virtual, uma interrupção não é um evento assíncrono, uma vez que, ao término do ciclo de execução de cada instrução, é realizada uma consulta ao modulo que implementa o processador de interrupções (PIC - Programmable Interrupt Controller), para consultar seu estado (se sinalizando a ocorrência de uma interrupção ou não).

While (not terminou) do begin If (statusPIC) then If (InterruptFlagOn) then begin SalvaCSIPFlags; SetaFlagsIFTF; IP := PegaIP_TVI(pegaPICNumInt); {busca novos valores p/CS e IP na tab.vetores de inter.} CS := PegaCS_TVI(pegaPICNumInt); End; {continua o fluxo de execução como se não tivesse ocorrido interrupção} Instrucao:= RDMSegOfs (CS,IP); {busca a próxima instrução a ser executada - CICLO FETCH} ........ end; {while}

Figura 1 - Ciclos de Busca e Execução no VXt

Apesar disto, analisando-se a questão do ponto de vista do código que a CPU virtual está executando, tanto o conceito de indivisibilidade das instruções quanto o conceito de assincronismo dos eventos (interrupções) são totalmente aplicados na medida em que, mesmo no simulador não se pode afirmar em que momento a PIC irá sinalizar a ocorrência de uma interrupção. Isto porque o módulo que implementa a PIC usa o gerador de números randômicos para aleatoriamente sinalizar a ocorrência ou não de uma interrupção. Filtro de Interrupções

Uma outra característica importante que o VXt apresenta é a possibilidade de identificação e mapeamento das interrupções por software geradas pela aplicação sendo monitorada. Dessa forma, é possível ao aluno identificar e analisar que informações estão sendo passadas como parâmetro para o núcleo do sistema operacional (desde que configurado para funcionar desta forma), e o que o sistema operacional está retornando para a aplicação. Além de identificar o conteúdo dos parâmetros, o VXt apresenta a descrição do funcionamento da interrupção, bem como o significado dos parâmetros de entrada e o significado das informações retornadas permitindo ao aluno obter informação detalhada sobre o ponto em que esta mantendo sua atenção no momento. O detalhamento das instruções

Uma instrução de hardware do processador Intel 8086 pode ocupar entre 1 a 6 bytes de comprimento, mas o código da operação

(opcode) ou seja, o padrão binário que identifica uma instrução, ocupa sempre os 6 primeiros bits do primeiro byte da mesma. Os outros 2 bits são usados para identificar respectivamente, se a instrução manipula operandos com ou sem sinal e, se a instrução manipula operandos do tipo byte ou word (2 bytes). A figura 2 destaca (na janela de registradores), onde as informações binárias relativas a instrução atualmente sendo executada são desmembradas, facilitando a análise da mesma por parte do aluno. Fig. 2 - Janela de registradores e opcode do VXt.

Naturalmente, associado a codificação binária, existe uma representação simbólica. Para cada instrução portanto, há um

Fig.3 – Janela de identificação da instrução atual e destaque p/dica da instrução

símbolo denominado mnemônico, o qual descreve "em mais alto nível", o significado da instrução. O VXt apresenta em uma janela específica o mnemônico da instrução atualmente sendo executada (fig.3). Um outro aspecto importante, que cabe destacar refere-se ao fato de que, quando o aluno passa o cursor sobre esta janela de mnemônico, automaticamente é apresentado uma descrição textual detalhando a instrução, de tal forma que, caso o aluno não tenha conhecimento específico (ou mesmo geral) sobre esta instrução, é possível uma rápida consulta para obter esta informação. Caso a dica

apresentada não tenha informações suficientes, uma consulta a função de ajuda (help) permitirá a obtenção de um nível de informação maior(fig.3). Informações de relocação

O VXt em sua última versão implementa o passo de carga e relocação de programas executáveis, apresentando (se solicitado) as informações relativas a tabela de relocação (fig. 4) e aos dados do cabeçalho do arquivo executável sendo Fig.4 – Tabela de relocação carregado. A partir destas informações o aluno pode aprofundar seus conhecimentos sobre o funcionamento deste tópico em particular. log de execução

Fig.5 – Log de execução

Uma das facilidades didáticas que o VXt apresenta é a possibilidade de registro de todas as instruções executadas, de tal forma a permitir ao aluno analisar o fluxo de execução das instruções até um determinado ponto do programa. Este registro de execução pode ser salvo em arquivo para estudos

posteriores. Considerações finais

Como citado anteriormente, além da experiência em programação e desenvolvimento de um software aplicativo de média complexidade, o VXt como programa executável (produto) apresenta as seguintes vantagens em relação a adoção de outras ferramentas comerciais disponíveis no mercado: •

Possui um caráter eminentemente didático, na medida em que procura apresentar informações que em outros ambientes sequer são consideradas;



Disponibiliza ao aluno informações sobre detalhes de hardware que outras ferramentas profissionais, tais como Turbo Debugger (Borland) ou Debug (DOS), não o fazem , principalmente por não ser esta a finalidade das mesmas;



Permite a utilização de pequenos programas de teste que não necessitam ser compilados formalmente, ou seja, é possível montar literalmente "na mão" as instruções e testá-las no VXt, sem passar por um passo formal de compilação, o que facilita sua aplicação em disciplinas introdutórias de cursos de computação;



Permite a análise das seqüências de chamadas de interrupções por software, permitindo uma análise do funcionamento tanto do mecanismo de interrupções, quanto da aplicabilidade do mesmo em sistemas operacionais;



Possibilita ao aluno revisar os conceitos desenvolvidos em aula na velocidade adequada as características individuais de cada um; • Permite uma análise macroscópica através da execução automatizada das instruções bem como uma análise microscópica através da facilidade de execução passo-a-passo, disponibilizando ao aluno dicas didáticas sobre o contexto em estudo. •

Permite, através da análise do código-fonte, o entendimento de como os conceitos abstratos podem ser implementados em software e, através deste entendimento, levar o aluno a construir analogias com o hardware real a partir da experiência obtida.

A partir da avaliação dos resultados obtidos com esta versão do VXt, pode-se concluir que, o projeto mantém-se fiel a orientação inicial que o de produzir uma ferramenta de software didática para o apoio ao ensino de disciplinas de arquitetura de computadores e sistemas operacionais. Conclusões

Os resultados obtidos através da avaliação da aplicação da ferramenta em sala-de-aula atingiu aos objetivos inicialmente propostos e permitiu o lançamento de um projeto multidisciplinar, que objetiva integrar disciplinas de Computação Gráfica, Orientação por Objetos, Engenharia de Software, Estrutura de Dados, Organização de Arquivos, de modo a permitir a criação de um laboratório onde cada disciplina venha a desenvolver seus conteúdos e utilizar o VXt como exemplo prático. Desse modo, torna-se mais fácil o entendimento dos conceitos porque os alunos aos poucos vão desenvolvendo uma base de referência que os permite construir analogias com situações experimentadas na prática. Uma primeira avaliação do projeto por parte dos alunos envolvidos nas versões iniciais, apresentou resultados que estimulam a

continuidade do projeto. Os alunos responsáveis pela versão 1.0, no semestre seguinte envolveram-se na implementação da versão 2.0. Esta continuidade nos trabalhos permitiu que se obtivesse um maior grau na qualidade do material produzido, uma vez que é de conhecimento público que o mesmo será reutilizado (senão por quem produziu, mas por outros que os seguirão ). Isto contribui para desenvolver no aluno um senso maior de responsabilidade e um espírito empreendedor - o que vem ao encontro dos objetivos da Universidade - não somente desenvolver os conteúdos teóricos mas contribuir para a formação do indivíduo. Cabe salientar que o código desta aplicação está disponível para donwload a partir do endereço http://www.inf.furb.rct-sc.br/~mattos. Qualquer dúvida, crítica e/ou sugestão será bem-vinda. Futuras extensões

Um dos macro-objetivos que ainda estão por ser atingidos refere-se ao fato de que pretende-se realizar um processo de carga (boot) do código executável do sistema operacional MS-DOS dentro do VXt, de tal forma que, seja possível monitorar-se cada ação realizada pelo mesmo em resposta aos estímulos gerados tanto pelo hardware como pelo software que está sendo executado. Referências Bibliográficas [EGG 95] EGGEBRECHT, Lewis C. Interfacing to the IBM Personal Computer. Sams, Indiana, 9 ed. 1995. [MAT 97] MATTOS, Mauro M. e TAVARES, Antonio C. VXt 1.0: Uma ferramenta didática para apoio ao ensino de software e hardware. Anais XIV SEMINCO, Blumenau,1997.

[MAT 98] MATTOS, Mauro M.,TAVARES, Antônio C.,OLIVEIRA,E. VXt: Descrição da implementação de um simulador de hardware. Anais XV SEMINCO, Blumenau,1998. [REC 80] RECTOR, Russel; ALEXY, G. The 8086 Book. Osborne/McGrawHill, Berkeley, 1980.

Lihat lebih banyak...

Comentários

Copyright © 2017 DADOSPDF Inc.