INF1612 - Software Básico - 2009.2

Aulas de Laboratório

Variáveis Locais

  1. Codifique as duas funções abaixo, swap e main, em assembly. ("Cole" do primeiro laboratório de assembly para ver como passar os strings de formatação para printf e scanf.)

    #include <stdio.h>
    void swap (int* x, int* y) {
      int z;
      z=*x; *x=*y; *y= z;
    }
    int main (void) {
      int a, b;
      printf ("valor de a? ");
      scanf ("%d", &a);
      printf ("valor de b? ");
      scanf ("%d", &b);
      swap (&a, &b);
      printf ("a = %d\nb = %d\n", a, b);
      return 0;
    }
    
  2. Codifique a função bobona, com a definição abaixo, em assembly. Teste-a com a função main dada, escrita em C.
    #include <stdio.h>
    #include <stdlib.h>
    #define MAX 4
    
    int bobona (int a[MAX], int b[MAX]){
    
      int local [MAX];
      int  i, acc;
    
      for (i=0;i<MAX;i++)
        local[i] = a[i]+b[i];
    
      acc = 1;
      for (i=0; i<MAX; i++)
        acc = acc*local[i];
    
      return acc;
    }
    
    int main (void) {
      int um[MAX], outro[MAX], i;
      for (i=0;i<MAX;i++) {
        printf ("valor de um[%d]? ",i);
        scanf ("%d", &um[i]);
      }
      for (i=0;i<MAX;i++) {
        printf ("valor de outro[%d]? ",i);
        scanf ("%d", &outro[i]);
      }
      printf ("resultado de bobona: %d\n", bobona(um, outro));
      return 1;
    }
    
    
  3. Codifique agora a main da função anterior em assembly.