pbn/curso/exemplos/08/salve-redir.asm
2025-06-02 11:48:21 -03:00

58 lines
1.1 KiB
NASM

; Chamadas de sistema...
%define SYS_WRITE 1
%define SYS_OPEN 2
%define SYS_CLOSE 3
%define SYS_DUP2 33
%define SYS_EXIT 60
; Flags da chamada SYS_OPEN...
%define O_WRONLY 0x1 ; apenas para escrita
%define O_CREAT 0x40 ; cria se não existir
%define O_TRUNC 0x200 ; trunca conteúdo existente
; Permissões do arquivo criado...
%define F_MODE 0o644
; Descritores de arquivos...
%define STDOUT 1
section .rodata
file db "mensagem.txt", 0 ; arquivo de destino
msg db "Salve, simpatia!", 10 ; Mensagem
len equ $ - msg ; Tamanho da mensagem
section .text
global _start
_start:
; open (ARQUIVO, FLAGS, MODO)
mov rax, SYS_OPEN
mov rdi, file
mov rsi, O_WRONLY | O_CREAT | O_TRUNC
mov rdx, F_MODE
syscall
mov r12, rax ; salvar descritor de arquivo retornado
; dup2(ANTIGO_FD, NOVO_FD)
mov rax, SYS_DUP2
mov rdi, r12
mov rsi, STDOUT
syscall
; write(FD, STRING, SIZE)
mov rax, SYS_WRITE
mov rdi, STDOUT
mov rsi, msg
mov rdx, len
syscall
; close(FD)
mov rax, SYS_CLOSE
mov rdi, r12
syscall
; exit(STATUS)
mov rax, SYS_EXIT
xor rdi, rdi
syscall