Atividade de Laboratório 3
Objetivos
O objetivo desta atividade é exercitar o conceito de laço e o método
de acesso indireto à memória do computador IAS.
Descrição
Escreva um programa em linguagem de máquina IAS (usando mapa de
memória) para calcular o produto escalar de dois vetores.
Produto escalar é uma operação que realiza a soma dos produtos de todos
os elementos de 2 vetores, dois-a-dois. Por exemplo, para os vetores
A=(1,2) e B=(4,13), temos o seguinte produto escalar: 1*4+2*13 = 30.
Você pode supor que os vetores possuem o mesmo tamanho, contudo esse tamanho é
arbitrário. Os vetores podem ou não estar representados consecutivamente
no mapa de memória. Mais informações são apresentadas na seção abaixo.
Requisitos (ATENÇÃO!)
- O tamanho dos vetores deve ser lido da memória, no endereço 0x3FF;
-
Os endereços dos vetores (endereços do primeiro elemento de cada
vetor) devem ser lidos da memória (endereços 0x3FD e 0x3FE).
-
Seu mapa de memória deve ser organizado em 3 partes: na primeira parte
há o código (instruções) e dados; na segunda parte (o "meio" do mapa
de memória) estão os 2 vetores, e nas 3 últimas posições estão
armazenados o tamanho e os endereços iniciais dos vetores, conforme
explicado no item acima.
-
Reserve as primeiras 64 linhas do mapa de memória para as instruções
e dados. Na correção da atividade, um script vai copiar suas
primeiras 64 linhas e juntar com vetores pré-determinados para
teste.
-
Termine a execução com um salto para um endereço maior ou
igual a 0x400.
-
Antes de terminar a execução, salve o resultado no registrador
AC.
Dicas
-
O arquivo (blank.hex)
contém todas as posições de memória do IAS preenchidas
com 0 - pode ser útil como "molde".
-
Para facilitar as coisas, pode ser considerado que a multiplicação
gera apenas resultados de até 40 bits.
Entrega e avaliação
Endereço da atividade no sistema SuSy:
https://susy.ic.unicamp.br:9999/mc404ab/Lab03
- Você deve submeter APENAS um arquivo no SuSy, chamado
raXXXXXX.hex, em que XXXXXX é seu ra com 6 dígitos.