Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- section .data
- err_msg: db "argument error", 0xa
- newline: db 0xa
- msg_size: equ 15
- section .text
- global _start
- _start:
- pop rax
- cmp rax, 2
- jne .arg_error
- ; write argument
- add rsp, 8
- pop rdi ; first argument
- mov r8, 0
- call .write
- jmp .exit
- .write:
- inc rdi
- inc r8
- ; exit when rsi is 0
- cmp [rdi], byte 0
- jne .write
- sub rdi, r8
- ; output argument
- mov rax, 1
- mov rsi, rdi
- mov rdx, r8
- mov rdi, 1
- syscall
- mov rax, 1
- mov rsi, newline
- mov rdx, 1
- mov rdi, 1
- syscall
- ret
- ; output argument error message
- .arg_error:
- ; write stdin
- mov rax, 1
- mov rsi, err_msg
- mov rdx, msg_size
- mov rdi, 1
- syscall
- ; exit status code 1
- mov rax, 60
- mov rdi, 1
- syscall
- ret
- ; exit function
- .exit:
- mov rax, 60
- mov rdi, 0
- syscall
- ret
Add Comment
Please, Sign In to add comment