; helloWorld.asm
; 
; Autor: Saulo José
; Data: 19/05/23

global _start

section .texto:                     ; -- Execução --

_start:
  mov eax, 0x4                      ; Vamos usar a syscall 'write', disponível
                                    ; no '/usr/include/asm/unistd_64.h'

  mov ebx, 1                        ; Usar o STDOUT como fd (file descriptor)
  mov ecx, messagem                 ; Usar a mensagem como buffer
  mov edx, tam_mes                  ; Obter o tamanho da mesnagem
  int 0x80                          ; Fazendo uma syscall com interrupt, não
                                    ; confundir com Inteiro

  mov eax, 0x1                      ; Realizando a syscall 'exit'
  mov ebx, 0                        ; Retornando 0
  int 0x80                          ; Executando a syscall

section .data:                      ; -- Declaração --
  messagem: db "Hello World!", 0xa  ; Variável string com '\n' no fim
   tam_mes equ $-messagem           ; Variável com o tamanho da mensagem (NASM)