Produto Interno
entre Arrays
Bruno Edson
Ítalo Sivini
Patrícia Roseane
Plínio Tadeu
Produto Interno entre Arrays
Problema
Solução
Fluxograma
Código Alto Nível
Código Híbrido
Código em Assembly
Memória
Código em Hexadecimal e Binário
Conclusões
Problema
 Realizar o produto interno entre dois
arrays (A e B – tamanho 1000), ou seja,
elemento a elemento do array.
 Armazenar em outro array (C), da forma
big endian, a parte mais significativa
primeiro e a menos significativa depois.
 Como o produto tem o dobro do tamanho,
o array C ocupará o dobro do espaço
(2000 words).
Solução
 Realizar procedimento repetitivo:
 Laço (quantidade de vezes conhecida 1000)
Leitura dos Dados na Memória
Multiplicação
Escrita do Resultado na Memória
Atualização de Ponteiros
Teste
Fluxograma
 Fluxo do Programa:
Código Alto Nível
 Um comando em um laço:
for (i = 1000, i > 0, i = i - 1){
C(i) = A(i) * B(i);
}
Início => i = 1000
Lê no AC ou MQ => A(i) ... B(i)
Multiplica com MQ => ... * ...
Escreve a partir do AC => C(i) = ...
Atualiza => i = i - 1
Testa => i > 0
Código Híbrido
for(i = 1000, i > 0, i = i – 1){
MQ = A(i); // LOAD MQ, A(i)
[AC MQ] = B(i) * MQ; // MUL B(i)
C(i+) = AC; // STOR C(i+)
AC = MQ; // LOAD MQ
C(i-) = AC; // STOR C(i-)
}
Código em Assembly ...
0000:
0001:
0002:
...
1000:
1001:
...
2000:
2001:
2002:
...
3999:
4000:
...
JUMP M(INI, 0:19); X
A(1)
A(2)
...
A(1000)
B(1)
...
B(1000)
C(1+)
C(1-)
C(1000+)
C(1000-)
Código em Assembly (cont.)
D1:
D2:
D3:
INI:
0000100001h // Decrementa os arrays A e B
0000200000h // Decrementa 2 do array C
STOR C(1-); LOAD INI; // Verifica Fim
LOAD MQ, A(1000); MUL B(1000); //Lê A(i), * B(i)
STOR C(1000+); LOAD MQ; // Escreve C(i+) e
STOR C(1000-); LOAD INI; // C(i-)
SUB D1; STOR INI; // Atualiza A(i), B(i)
LOAD INI+1; SUB D2; // Atualiza C(i+)
STOR INI+1; LOAD INI+2;// e...
SUB D2; STOR INI+2; // C(i-)
SUB D3; JUMP +M(INI, 0:19) // Testa e Repete
FIM: ...
Memória ...
Memória (cont.)
Código em Hexadecimal e Binário
Conclusões
 Conhecer o funcionamento da máquina
IAS
 Aprender a trabalhar com instruções de
mais baixo nível
 Implementar algoritmos simples, como no
caso laços.