Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
Organização e Arquitetura de Computadores. Parte 1 Semana 1 e 2 : Caracteristicas do processador NEANDER-X. Características : É um processador simples utilizado para fins acadêmicos, pelo fato dos processadores modernos serem mais complexos. No entanto, esses processadores modernos tem toda a base conceitual do Neander. O Neander possui o modo de endereçamento direto, que também é chamado de absoluto. Nesse modo, a palavra que segue o código da instrução contém, nas instruções de manipulação de dados, o endereço de memória do operando. Nas instruções de desvio, esse endereço corresponde à posição de memória onde está a próxima instrução a ser executada. Questões : a) Quantos bits são utilizados para representar uma instrução ? Utiliza 8 bits para representar uma instrução. b) Quantos bits são utilizados para representar um endereço ? Utiliza 8 bits para representar um endereço. c) Como são representados os números inteiros negativos ? Os números negativos são representados como Flag N (negativo) em complemento de 2. Se valer 1, o inteiro é negativo, se valer 0, o inteiro é positivo. d) Quantas instruções podem existir ? Em 8 bits podem ser representadas até 256 instruções. O Neander-X tem 10 instruções e uma 11° que representa “nenhuma operação”. e) Qual o tamanho máximo de memória endereçavel ? 256 posições (palavras de 8 bits) e apenas endereçamento direto. f) Quais são os registradores disponíveis ? 1 acumulador de 8 bits (AC), 1 apontador de programa de 8 bits (PC), 1 registrador de estado com 2 códigos de condição: negativo (N) e zero (Z), o REM, que é o registrador de endereços da memória e o RDM, que é o registrador de dados da memória. g) Qual o formato de uma instrução ? 8 bits para opcode (código da operação) e os 8 bits seguintes para o operando. Há Instruções que ocupam apenas 1 byte (NOP,NOT) e instruções que usam 2 bytes (STA,LDA,ADD,OR,AND,JMP,JN,JZ). SEMANA 3 E 4 : Pesquisar a função dos simuladores e comparar o simulador NeanderWin (simulador do processador Neander-X) com outro a sua escolha. Tendo a função de facilitar ao máximo as atividades didáticas do professor e o apoio mais completo possível para as dificuldades comuns do aluno. Sendo criado um ambiente integrado para desenvolvimento, que executa em Windows e Linux incluindo: Editor de textos; Montador (assembler); Simulador da arquitetura; Visualizador da memória simulada; Ferramenta de apoio ao aprendizado de instruções; Utilitário para conversões de bases; Simulador de visor painel de chaves; Gerador /carregador de imagem da memória simulada. Com isso os alunos tem diversas experiência práticas como simulador, buscando nesse processo muito mais que apresentar conceito teóricos e nomenclatura, mas o conduzir a uma visão abrangente e em pequena medida, criticar sobre a estrutura e o conjunto de instruções, que permita gerar a curiosidade para estudos futuros mais aprofundados. Comparação do simulador Neanderwin e o simulador K&S. Quanto às limitações analisadas nos simuladores existentes e o que se deseja que o sistema proposto atenda, verificado que as ferramentas apresentadas, Neander e K&S, simulam de uma forma correta o funcionamento do hardware (parte física) e a interação entre os dispositivos. O problema está na forma de como é apresentada a simulação e nas funcionalidades oferecidas, o simulador K&S é um simulador gráfico que funciona de forma correta, mas possui duas deficiências significativas: 1° 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. 2° 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. 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. SEMANA 1 e 2 desta prática : Ambientação a) Executar o download do simulador. Download realizado no site : http://www.dcc.ufrj.br/~gabriel/neander.php b) Identificar as partes do simulador descrevendo um breve roteiro de como gerar e executar um programa. Como exemplo, um programa que realiza a soma de 3 posições consecutivas da memória e armazena o resultado numa quarta posição. Inicialmente, devem ser escolhidas a área de dados e a área de programa, ou seja, a localização das instruções e dados na memória. Não existem critérios para essa escolha, mas deve ser observado que área de programa não pode invadir a área de dados e vice-versa. Ou seja, para esse programa, foi escolhida uma alocação de memória de tal forma que o programa ocupe a metade inferior da memória e os dados a metade superior, como segue: Área de programa início do programa posição 0 (0H) Área de dados primeira parcela posição 128 (80H) Segunda parcela posição 129 (81H) Terceira parcela posição 130 (82H) Resultado posição 131 (83H) O programa possível seria: X EQU 128 : Endereço de variável X definido como 128 Y EQU 129 : Endereço de variável Y definido com 129 W EQU 130 : Endereço de variável W definido como 130 Z EQU 131 : Endereço de variável Z definido como 131 ORG 0 LDA X : Acumulador A recebe conteúdo de X ADD Y : Conteúdo de A é somado ao conteúdo de Y ADD W : Conteúdo de A é somando ao conteúdo de W STA Z : Conteúdo de A é copiado para Z HLT : Processador para Esse programa pode ser editado em linguagem de montagem, depurado e executado usando o simulador/depurador NEANDERWIN. c) Listar as instruções disponíveis com o respectivo formato e descrição. Código binário Instrução Descrição 0000 NOP Nenhuma operção 0001 STA ender Armazena acumulador (store) 0010 LDA ender Carrega acumulador (load) 0011 ADD ender Soma 0100 OR ender Operação lógica “ou” 0101 AND ender Operação lógica “e” 0110 NOT Inverte 1000 JMP ender Desvio incondicional (jump) 1001 JN ender desvio condicional (jump on negative) 1010 JZ ender desvio condicional (jump on zero) 1011 JNZ ender desvio condicional (jump on not zero) 1100 IN ender operação de entrada no dispositivo “ender” 1101 OUT ender operação de saída no dispositivo “ender” 1110 LDI imed carrega o valor imediato imed no acumulador 1111 HLT término da execução (halt)
Compartilhar