Ana Francisca Posted September 5, 2023 at 09:13 PM Share Posted September 5, 2023 at 09:13 PM (edited) Tô estudando o assembly e tentei construir um código que altera o valor de um dado especifico, vou mostrar aqui: section .data nome db 'Ana Rocha' section .text global _start _start: ; Escrever o nome: Ana Rocha mov, 4 mov, 1 mov, nome mov, 9 int 0x80 mov nome, dword 'Jon' ; Mudar o nome Ana para Jon Linhares ; Escrever o nome: Jon Linhares mov, 4 mov, 1 mov, nome mov, 9 int 0x80 ; Finalizando o programa mov, 1 int 0x80 Só que ta dando erro de sintaxe, provavelmente por que eu realmente não entendi muito de como se usa esses especificadores, então quem puder me mandar algum documento que explique eu ficarei muito grata.🙃 Edited September 5, 2023 at 10:20 PM by Fernando Mercês Formatação de código 1 Quote Link to comment Share on other sites More sharing options...
Fernando Mercês Posted September 5, 2023 at 10:28 PM Share Posted September 5, 2023 at 10:28 PM Oi Ana! Parabéns pela decisão em estudar Assembly. 🙂 No teu código falta especificar o destino nas instruções MOV. Por exemplo: mov, 4 tá pedindo para mover/copiar o valor 4, mas para onde? Falta especificar um destino, entende? O que você precisa aí é saber em qual registrador você quer colocar tais valores. O nome do registrador vai antes da vírgula. Você pode ler mais sobre o assunto no nosso livro, por exemplo, ou em centenas de outros livros e artigos na internet. Outra coisa: em Assembly, você não "muda" o conteúdo de um label assim: mov nome, dword 'Jon' ; Mudar o nome Ana para Jon Linhares Para atingir o que você quer, o jeito mais simples é especificar, na seção .data, dois labels, nome1 e nome2, e aí usá-los um em cada bloco de código que imprime um nome. Por fim, a syscall que sai do programa é a SYS_EXIT. Ela recebe um argumento (você pode conferir aqui ou dando um man 2 exit). Sendo assim, você precisa fazer: mov ebx, 0 mov eax, 1 int 0x80 Isso é equivalente à uma chamada exit(0), entende? E sair com o código de retorno zero é o padrão para dizer para o SO que "deu tudo certo". 😉 Valeu! 1 Quote Link to comment Share on other sites More sharing options...
Ana Francisca Posted September 6, 2023 at 07:55 PM Author Share Posted September 6, 2023 at 07:55 PM Noss percebi que não sei nada de assembly🥲 Mas certo vou estudar um pouco mais sobre registradores e muito obrigado pela ajuda. Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.