INF1018- Software Básico

Aulas de Laboratório

Laboratório 8 - Mais Funções

  1. Você terminou todos os laboratórios anteriores? Se não, termine agora.

  2. Escreva em assembly uma função para imprimir cada caracter de uma string recebida como parâmetro. A função recebe um único parâmetro char* (ponteiro para string a ser impressa). Use a função putchar para imprimir cada caracter:

      int putchar(int c);
    
    e termine mandando imprimir o caracter '\n'.

    Escreva em C uma função main para testar sua função em assembly.

  3. Considere o código abaixo:

    struct X {
      int c;
      struct X *next;
    };
    
    int add (struct X *x) {
      int a = 0;
      for (; x != NULL; x = x->next)
        a += x->c;
      return a;
    }
    
    Traduza a função add para assembly e escreva em C uma função main para testá-la. Sua função main deve alocar e inicializar as estruturas!
  4. Assumindo a definição anterior para a estrutura X, traduza a função abaixo para assembly:

    int add2 (struct X *x) {
      if (x == NULL) return 0;
      else return x->c + add2(x->next);
    }
    

  5. Refaça os exercícios anteriores assumindo que a estrutura X tem a definição abaixo:

    struct X {
      char c;
      struct X *next;
    };
    

    Dicas: