Ir para conteúdo

Quero entender sobre os especificadores de bytes: byte, word, dword, qword e tbyte


Ana Francisca

Posts Recomendados

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.🙃

 

Editado por Fernando Mercês
Formatação de código
  • Curtir 1
Link para o comentário
Compartilhar em outros sites

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!

  • Curtir 1
Link para o comentário
Compartilhar em outros sites

Participe da conversa

Você pode postar agora e se cadastrar mais tarde. Se você tem uma conta, faça o login para postar com sua conta.

Visitante
Responder

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emojis são permitidos.

×   Seu link foi automaticamente incorporado.   Mostrar como link

×   Seu conteúdo anterior foi restaurado.   Limpar o editor

×   Não é possível colar imagens diretamente. Carregar ou inserir imagens do URL.

  • Quem Está Navegando   0 membros estão online

    • Nenhum usuário registrado visualizando esta página.
×
×
  • Criar Novo...