Post on 24-Jan-2016
description
Produto InternoProduto Internoentre Arraysentre Arrays
Bruno EdsonBruno EdsonÍtalo SiviniÍtalo Sivini
Patrícia RoseanePatrícia RoseanePlínio TadeuPlínio Tadeu
Produto Interno entre ArraysProduto Interno entre Arrays ProblemaProblema SoluçãoSolução FluxogramaFluxograma Código Alto NívelCódigo Alto Nível Código HíbridoCódigo Híbrido Código em AssemblyCódigo em Assembly MemóriaMemória Código em Hexadecimal e BinárioCódigo em Hexadecimal e Binário ConclusõesConclusões
ProblemaProblema
Realizar o produto interno entre dois Realizar o produto interno entre dois arrays (A e B – tamanho 1000), ou seja, arrays (A e B – tamanho 1000), ou seja, elemento a elemento do array.elemento a elemento do array.
Armazenar em outro array (C), da forma Armazenar em outro array (C), da forma big endian, a parte mais significativa big endian, a parte mais significativa primeiro e a menos significativa depois.primeiro e a menos significativa depois.
Como o produto tem o dobro do tamanho, Como o produto tem o dobro do tamanho, o array C ocupará o dobro do espaço o array C ocupará o dobro do espaço (2000 words).(2000 words).
SoluçãoSolução
Realizar procedimento repetitivo:Realizar procedimento repetitivo: Laço (quantidade de vezes conhecida - Laço (quantidade de vezes conhecida -
1000)1000) Leitura dos Dados na MemóriaLeitura dos Dados na Memória MultiplicaçãoMultiplicação Escrita do Resultado na MemóriaEscrita do Resultado na Memória Atualização de PonteirosAtualização de Ponteiros TesteTeste
FluxogramaFluxograma
Fluxo do Programa:Fluxo do Programa:
Código Alto NívelCódigo Alto Nível
Um comando em um laço:Um comando em um laço:for (i = 1000, i > 0, i = i - 1){for (i = 1000, i > 0, i = i - 1){
C(i) = A(i) * B(i);C(i) = A(i) * B(i);}}
Início => i = 1000Início => i = 1000 Lê no AC ou MQ => A(i) ... B(i)Lê no AC ou MQ => A(i) ... B(i) Multiplica com MQ => ... * ...Multiplica com MQ => ... * ... Escreve a partir do AC => C(i) = ...Escreve a partir do AC => C(i) = ... Atualiza => i = i - 1Atualiza => i = i - 1 Testa => i > 0Testa => i > 0
Código HíbridoCódigo Híbrido
for(i = 1000, i > 0, i = i – 1){for(i = 1000, i > 0, i = i – 1){
MQ = A(i); MQ = A(i); // LOAD MQ, A(i)// LOAD MQ, A(i)
[AC MQ] = B(i) * MQ; [AC MQ] = B(i) * MQ; // MUL B(i)// MUL B(i)
C(iC(i++) = AC; ) = AC; // STOR C(i+)// STOR C(i+)
AC = MQ; AC = MQ; // LOAD MQ// LOAD MQ
C(iC(i--) = AC; ) = AC; // STOR C(i// STOR C(i--))
}}
Código em Assembly ...Código em Assembly ...0000:0000: JUMP M(INI, 0:19); XJUMP M(INI, 0:19); X0001:0001: A(1)A(1)0002:0002: A(2)A(2)...... ......1000: 1000: A(1000)A(1000)1001:1001: B(1)B(1)...... ......2000:2000: B(1000)B(1000)2001:2001: C(1+)C(1+)2002:2002: C(1-)C(1-)......3999:3999: C(1000+)C(1000+)4000:4000: C(1000-)C(1000-)......
Código em Assembly (cont.)Código em Assembly (cont.)
D1:D1: 0000100001h 0000100001h // Decrementa os arrays A e B// Decrementa os arrays A e BD2:D2: 0000200000h 0000200000h // Decrementa 2 do array C// Decrementa 2 do array CD3: D3: STOR C(1-); LOAD INI; STOR C(1-); LOAD INI; // Verifica Fim// Verifica FimINI: INI: LOAD MQ, A(1000); MUL B(1000); LOAD MQ, A(1000); MUL B(1000); //Lê A(i), * B(i)//Lê A(i), * B(i)
STOR C(1000+); LOAD MQ; STOR C(1000+); LOAD MQ; // Escreve C(i+) e// Escreve C(i+) eSTOR C(1000-); LOAD INI; STOR C(1000-); LOAD INI; // C(i-)// C(i-)SUB D1; STOR INI; SUB D1; STOR INI; // Atualiza A(i), B(i)// Atualiza A(i), B(i)LOAD INI+1; SUB D2; LOAD INI+1; SUB D2; // Atualiza C(i+)// Atualiza C(i+)STOR INI+1; LOAD INI+2;STOR INI+1; LOAD INI+2;// e...// e...SUB D2; STOR INI+2; SUB D2; STOR INI+2; // C(i-)// C(i-)SUB D3; JUMP +M(INI, 0:19) SUB D3; JUMP +M(INI, 0:19) // Testa e Repete// Testa e Repete
FIM:FIM: ......
Memória ...Memória ...
Memória (cont.)Memória (cont.)
Código em Hexadecimal e BinárioCódigo em Hexadecimal e Binário
ConclusõesConclusões
Conhecer o funcionamento da máquina Conhecer o funcionamento da máquina IASIAS
Aprender a trabalhar com instruções de Aprender a trabalhar com instruções de mais baixo nívelmais baixo nível
Implementar algoritmos simples, como no Implementar algoritmos simples, como no caso laços.caso laços.