Jump to content

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


Ana Francisca

Recommended Posts

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 by Fernando Mercês
Formatação de código
  • Curtir 1
Link to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...