section .data ;Geralmente, os programas assembly são dividos em seções. .data armazena variáveis globais
; um ponto de atenção é que nada impede do programador de não respeitar essa boa prática
; no programa final, todos os dados estarão juntos. É muito comum em malwares os dados estarem fora das seções convencionais.
msg: db "Hello, @Kernelzera!", 10 ;db é uma diretiva usada para criar bytes de dados letras, dígitos e outros caracteres são codificados em ASCII
;em seguida adicionamos um byte igual a 10. Por convenção o byte 10 inicia
;uma nova linha
section .text ; é a instrução onde normalmente estão as instruções.
global _start
_start: ; label start faz referência ao endereço do entry point, ou seja, a primeira instrução a ser executada
mov rax, 1 ;o número da chamada do sistema deve ser armazenado em rax. 1 é o número da syscall 'write'
mov rdi, 1 ; os registradores a seguir armazenam os argumentos. No caso 1 é o descriptor de stdout (a saída do nosso programa vai ser a tela)
mov rsi, msg ; endereço da string definida na section .data
mov rdx, 20 ; tamanho da string em bytes
syscall
mov rax, 60 ;número da syscall 'exit'
mov rdi, 0 ;parâmetro da syscall exit.
syscall
To embed this project on your website, copy the following code and paste it into your website's HTML: