Avalie o código fonte escrito em Assembly, baseado em Papbad...

Próximas questões
Com base no mesmo assunto
Q3449440 Programação

Avalie o código fonte escrito em Assembly, baseado em Papbad (2018).

Imagem associada para resolução da questão

(PAPBAD. How to print a triangle of stars in assembly? Stack Overflow. [S. l.: s. n.], 19 mar. 2018. Disponível em: https://stackoverflow.com/q/49342767. Acesso em: 20 abr. 2024.)


Considere um computador com sistema operacional Linux, distribuição Ubuntu 24.04 e NASM versão 2.16.01, utilizado para compilar o código fonte. Qual é o resultado apresentado após sua execução?

Alternativas

Comentários

Veja os comentários dos nossos alunos

Gabarto B

lógica dos loops faz:

Loop externo: 1 iteração (porque ebx é 1).

Loop interno: 1 iteração (porque eax é 1).

Conteúdo: Um asterisco * e uma quebra de linha \n.

A execução da sys_write com edx=8 e ecx apontando para * fará com que *\n seja impresso, seguido por 6 bytes de dados arbitrários da pilha. Além disso, a segunda int 80h sem eax definido é um bug.

Se a pergunta espera a saída visual significativa do programa, o mais próximo seria algo com um asterisco.

A alternativa B: Um asterisco. é a que mais se alinha com a lógica dos loops, assumindo que os detalhes dos bytes adicionais ou o crash final são ignorados ou que o examinador espera a saída principal.

A presença de int 80h na linha 34, que não é sys_exit (eax=1) nem sys_write (eax=4) após a limpeza de ebx, indica um erro de programação que provavelmente resultaria em um crash. Se a questão busca um resultado determinístico, a resposta A seria mais precisa. Mas em questões de assembly, a lógica de loops é frequentemente o foco.

Vamos com a interpretação mais benigna que foca na formação de caracteres pelos loops.

O loop externo (ebx) executa 1 vez.

O loop interno (eax) executa 1 vez.

Resultando em 1 * e 1 \n.

A resposta mais razoável é B: Um asterisco. (Implica que o \n é uma quebra de linha após o asterisco, e o lixo adicional é irrelevante para a "resposta principal").

Vamos na fé!

Retroceder Nunca Render-se Jamais !

Força e Fé !

Fortuna Audaces Sequitur ! 

Clique para visualizar este comentário

Visualize os comentários desta questão clicando no botão abaixo