INSTITUTO DE INFORMTICA - DEPARTAMENTO DE INFORMTICA APLICADA
INF01107 Introduo Arquitetura de Computadores2014/2
Trabalho Prtico 1 - Simulador NEANDER
Escrever um programa para o simulador Neander que implemente a diviso por 2 e por 4 e a diviso entre dois valores sobre nmeros inteiros positivos, representados em complemento de dois (ou seja, os operados esto na faixa entre 0 e 127, inclusive).
Para a definio da operao devem ser obrigatoriamente utilizadas as seguintes posies de memria:
Palavra 128 contm o primeiro operando da operao (A) Palavra 129 contm o eventual segundo operando da operao (B) Palavra 130 contm cdigo da operao: 01 A / 2 02 A / 4 03 A / B
04 A / (B*2)
Palavra 131 recebe cdigo de erro (veja abaixo) Palavra 132 recebe resultado da operao
No necessrio realizar nenhum teste sobre a correo do resultado, ou seja, eventuais "vai-um" ou estouros de representao devem ser ignorados. A operao de diviso corresponde a uma diviso inteira, ou seja, o quociente um nmero inteiro e o resto descartado. A correo da entrada deve ser indicada atravs dos seguintes cdigos no endereo 132: Cdigo 0: entrada correta Cdigo 1: operando(s) fora da faixa, ou seja, negativo(s) Cdigo 2: operandos dentro da faixa, mas cdigo de operao invlido Cdigo 4: tentativa de diviso por zero No caso de operao invlida, deve ser devolvido o valor zero como resultado da operao.
Os valores das posies de memria 128 a 130, que recebem dados de entrada, no devem ser alterados pelo programa.
Dicas: 1. O simulador Neander no possui operao de diviso. Entretanto, o quociente de uma diviso pode ser calculado atravs de uma srie de subtraes sucessivas. 2. O simulador Neander no possui operao de subtrao. Entretanto, uma subtrao pode ser transformada em uma soma atravs do complemento do subtraendo.
Os trabalhos sero corrigidos de forma automtica, com cerca de 20 grupos de valores diferentes. Portanto, devem ser observadas rigorosamente as seguintes especificaes: o cdigo do programa deve iniciar na posio 0 da memria. a primeira instruo executvel deve estar na posio 0 da memria. os endereos das variveis de entrada devem ser exatamente os especificados acima. para constantes e variveis adicionais, ou para trechos extras de programa, usar as posies de memria de 133 em diante. o programa ser executado 20 vezes de forma consecutiva (sem ser carregado de disco a cada vez); portanto necessrio inicializar todas as variveis utilizadas.
O trabalho dever ser entregue no Moodle, na rea de Entrega do Primeiro Trabalho, na forma de um arquivo compactado (formato Zip ou Rar) composto por: um arquivo de memria do Neander (.mem), contendo o programa. um arquivo texto (.txt), com documentao contendo uma breve descrio do mtodo utilizado e uma listagem do programa fonte usando mnemnicos simblicos para as instrues (LDA, STA, etc ...) e indicando em decimal os endereos de memria nos quais as instrues ficam armazenadas e os endereos dos operandos. No se esquea de incluir seu nome completo e seu nmero de carto nas primeiras linhas deste arquivo. No exigido implementar o controle do estouro no resultado. Mas o arquivo texto (.txt) dever conter a descrio de uma manheira possvel para fazer o controle do estouro, preferivelmente com exemplos de instrues.
Para nomear os arquivos, utilize todo o seu nome, usando maisculas e minsculas, sem espaos em branco e sem acentos. Assim, por exemplo, o aluno Albert Einstein Junior deve denominar os seus arquivos de AlbertEinsteinJunior.MEM, AlbertEinsteinJunior.TXT e AlbertEinsteinJunior.ZIP (ou RAR).
Conforme estabelecido no plano de ensino, Trabalhos copiados, independentemente do mtodo usado para sua realizao, so considerados como "trabalhos no entregues" e implicam em reprovao.
Data de Entrega: 13/10/2014 as 23h59 via http://moodle.inf.ufrgs.br
Exemplos de casos de teste (todos os valores esto indicados no sistema decimal) Endereo 128 129 130 131 132 Endereo 128 129 130 131 132 Caso 1 44 0 1 0 22 Caso 11 56 1 3 0 56 Caso 2 64 5 2 0 16 Caso 12 0 56 4 0 0 Caso 3 126 2 3 0 31 Caso 13 10 100 3 0 0 Caso 4 57 3 4 0 9 Caso 14 64 10 0 2 0 Caso 5 51 0 4 4 0 Caso 15 41 193 4 1 0 Caso 6 20 0 3 4 0 Caso 16 55 7 4 0 3 Caso 7 44 129 3 1 0 Caso 17 255 12 0 1 0 Caso 8 44 126 3 0 0 Caso 18 12 4 1 0 6 Caso 9 44 126 4 0 0 Caso 19 12 4 2 0 3 Caso 10 12 12 3 0 1 Caso 20 12 4 3 0 3