; 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