Considere o programa abaixo:
#include <stdio.h>
char S2[] = {65, 108, 111, 32, 123, 103, 97, 108, 101, 114, 97, 125, 33, 0};
int main (void) {
char *pc = S2;
while (*pc)
printf ("%c", *pc++);
printf("\n");
return 0;
}
Traduza o programa para assembly usando as regras vistas em sala.
"Cole" o início (prólogo) e o final (finalização)
do
programa visto no laboratório 6.
Copie de lá também o trecho de código que imprime
o valor de %eax.
Esse código utiliza a uma string de formatação criada com endereço Sf.
Você terá que criar duas strings de formatação parecidas no novo programa (uma string para imprimir um caractere com formato %c
e outra para imprimir a quebra de linha.
Modifique o programa C anterior para imprimir somente as letras diferentes de 'a' (minúsculo). (Consulte a tabela ascii se necessário.) Teste-o em C e depois faça a mesma modificação no código assembly.
S2
.
Traduza-o para assembly.
(Lembre-se de usar a string de formatação correta para imprimir um inteiro.)
Escreva em C um programa que imprima os quadrados dos números de 1 a 10 e depois traduza-o para assembly.
Atenção: esse programa não deve utilizar um array de inteiros global! Para multiplicar um número por si mesmo em assembly, use a instrução imull (multiplicação de inteiros).
Atenção: esse
programa não é igual ao visto no laboratório 6!
No laboratório 6, percorremos os arrays com o uso de ponteiros.
Você deve, agora, traduzir a operação de indexação do array
usada no código C.
#include <stdio.h>
int nums[4] = {65, -105, 111, 34};
int main (void) {
int i;
int s = 0;
for (i=0;i<4;i++)
s = s+nums[i];
printf ("soma = %d\n", s);
return 0;
}