Você está na página 1de 2

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL

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

Você também pode gostar