Você está na página 1de 2

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL INSTITUTO DE INFORMTICA - DEPARTAMENTO DE INFORMTICA APLICADA INF01107 - Arquitetura e Organizao de Computadores I 2010/1

Trabalho Prtico 1 - Simulador NEANDER Escrever um programa para o simulador Neander que implemente as quatro operaes aritmticas bsicas (soma, subtrao, multiplicao e diviso) sobre nmeros inteiros positivos, representados como inteiros sem sinal, isto , os operados esto na faixa entre 0 e 255, inclusive. Estas operaes devem ser utilizadas para calcular o valor da expresso y = a.x + b Para a definio das variveis devem ser obrigatoriamente utilizadas as seguintes posies de memria: Endereo 128 varivel a (garantidamente 1 a 127) Endereo 129 varivel x Endereo 130 varivel b Endereo 131 varivel y, calculada pela expresso acima Como entretanto a arquitetura do Neander faz com que as operaes aritmticas sejam implicitamente realizadas em mdulo de 256 (resultados maiores que 256 so divididos por 256 e somente entregue o resto desta diviso), podem ocorrer inconsistncias no valor de y, pois ele estar sendo calculado pela expresso y =( a.x + b) mod 256 Para detectar se o valor de y est consistente ou no, ser utilizado o seguinte mtodo: uma vez calculado o valor de y, o valor de x ser verificado atravs das expresses x = (y b) div a (y b) mod a = 0 ou seja, y ser declarado consistente caso o valor de x calculado por (y b) div a seja igual ao valor original de x, e caso a diviso por a produza resto zero. Os resultados destes clculos devem ser armazenados nas seguintes posies de memria: Endereo 132 resultado de (y b) div a Endereo 133 resultado de (y b) mod a Endereo 134 indicador de consistncia (1 se consistente e 0 caso contrrio) Os valores das posies de memria 128, 129 e 130 no devem ser alterados pelo programa. Dicas: 1. O simulador Neander no possui operao de subtrao. Entretanto, uma subtrao pode ser transformada em uma soma atravs do complemento do subtraendo. 2. O simulador Neander no possui operao de multiplicao. Entretanto, uma multiplicao pode ser transformada em uma srie de somas sucessivas. Note que, uma vez conhecido o valor do multiplicador, sabem-se quantas somas devero ser realizadas. 3. O simulador Neander no possui operao de diviso. Entretanto, o quociente de uma diviso pode ser calculado atravs de uma srie de subtraes sucessivas. Note que as subtraes so condicionais, ou seja, devem ser realizadas at que o valor do dividendo atual seja zero (e neste

caso o resto zero) ou at que o valor do dividendo atual seja menor que o divisor (e neste caso o dividendo atual o resto da diviso). Os trabalhos sero corrigidos de forma automtica, com 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 135 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, contendo o programa. um arquivo texto, 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. A documentao, a ser entregue via Moodle, dever conter um arquivo fonte comentado (.txt) e um executvel (.mem). Para nomear os arquivos, utilize os seus dois primeiros nomes, sem espao em branco, sem conectivos, e sem acentos. Assim, por exemplo, o aluno Um de Trs Dois Oliveira Quatro deve denominar os seus arquivos de UmTres.MEM, UmTres.TXT e UmTres.ZIP (ou RAR). Data de Entrega: 11/05/2010 via http://moodle.inf.ufrgs.br Exemplos de casos de teste (todos os valores esto indicados no sistema decimal)
Endereo Caso 1 Caso 2 Caso 3 Caso 4 Caso 5 Caso 6 Caso 7 Caso 8 Caso 9 Caso 10 Caso 11 Caso 12 Caso 13 Caso 14 Caso 15 Caso 16 Caso 17 Caso 18 Caso 19 Caso 20 128 a 10 2 13 15 127 33 127 127 126 1 2 45 45 66 127 42 127 127 1 3 129 x 50 7 17 254 15 42 255 255 128 2 2 3 3 2 2 0 127 1 127 99 130 b 12 1 19 255 1 8 255 127 128 3 7 121 255 2 0 2 255 2 128 1 131 y=ax+b 0 15 240 225 114 114 128 0 128 5 11 0 134 134 254 2 0 129 255 42 132 x=(y-b) div a 24 7 17 15 0 3 1 1 0 2 2 3 3 2 2 0 0 1 127 13 133 (y-b) mod a 4 0 0 1 113 7 2 2 0 0 0 0 0 0 0 0 1 0 0 2 134 consistente 0 1 1 0 0 0 0 0 0 1 1 1 1 1 1 1 0 1 1 0