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

Embed on website

To embed this project on your website, copy the following code and paste it into your website's HTML: