pbn/curso/exemplos/03/sections.asm
2025-05-19 11:04:24 -03:00

32 lines
898 B
NASM

; Arquivo : sections.asm
; Descrição : Demonstra a definição das seções .rodata, .data, .bss e .text
; Montagem : nasm -f elf64 sections.asm
; Link-edição: ld sections.o -o sections
section .rodata
msg db "Eu sou imutável!", 0x0a
len equ $ - msg
section .data
contador dq 0 ; preenche 8 bytes (qword) com 0x00 em 'contador'
section .bss
buffer resb 32 ; reserva 32 bytes no endereço 'buffer'
section .text
global _start ; ponto de entrada do programa
_start:
mov rax, 1 ; syscall: write
mov rdi, 1 ; fd 1 = stdout
mov rsi, msg ; endereço da mensagem
mov rdx, len ; tamanho da mensagem
syscall
mov rax, [contador] ; copia o dado no endereço 'contador' para rax
inc rax ; incrementa em 1 o valor em rax
mov [contador], rax ; copia o valor em rax para o endereço 'contador'
mov rax, 60 ; syscall: exit
xor rdi, rdi ; estado de término = 0
syscall