Hello World с проверкой системного вызова
Hello World в файл
section .data
message db "Hello world!", 10
message_len equ $ - message
error_msg db "Error writing to stdout!", 10
error_len equ $ - error_msg
section .text
global _start
_start:
mov rax, 1
mov rdi, 1
mov rsi, message
mov rdx, message_len
syscall
cmp rax, 0
jl error_handler
je exit
jmp exit
error_handler:
mov rax, 1
mov rdi, 2
mov rsi, error_msg
mov rdx, error_len
syscall
mov rax, 60
mov rdi, 1
syscall
exit:
mov rax, 60
xor rdi, rdi
syscallsection .data
filename db "output.txt", 0
message db "Hello, world!", 10
message_len equ $ - message
error_open db "Error opening file!", 10
error_open_len equ $ - error_open
error_write db "Error writing to file!", 10
error_write_len equ $ - error_write
section .text
global _start
_start:
mov rax, 2
mov rdi, filename
mov rsi, 0x241
mov rdx, 0644o
syscall
cmp rax, 0
jl open_error
mov r8, rax
mov rax, 1
mov rdi, r8
mov rsi, message
mov rdx, message_len
syscall
cmp rax, 0
jl write_error
mov rax, 3
mov rdi, r8
syscall
jmp exit
open_error:
mov rax, 1
mov rdi, 2
mov rsi, error_open
mov rdx, error_open_len
syscall
mov rdi, 1
jmp exit_with_code
write_error:
mov rax, 1
mov rdi, 2
mov rsi, error_write
mov rdx, error_write_len
syscall
mov rdi, 2
mov rax, 3
mov rdi, r8
syscall
exit_with_code:
mov rax, 60
syscall
exit:
mov rax, 60
xor rdi, rdi
syscall# Задача 1
./hello_checked
# Задача 2
./hello_file
cat output/output.txt