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.