32 lines
898 B
NASM
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
|