Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- ; main.asm
- ;
- ; A simple program to write to standard output (stdout) and read from standard input (stdin)
- ;
- ; (C) 2017, Richard Marks <ccpsceo@gmail.com>
- ; MIT License
- ;
- global start
- stdout equ 1
- stdin equ 0
- sys_exit equ 0x2000001
- sys_write equ 0x2000004
- sys_read equ 0x2000003
- section .text
- start:
- mov rax, sys_write
- mov rdi, stdout
- mov rsi, login_msg
- mov rdx, login_msg.len
- syscall
- mov rsi, username
- call read_string
- mov rax, sys_write
- mov rdi, stdout
- mov rsi, lf
- mov rdx, 1
- syscall
- mov rax, sys_write
- mov rdi, stdout
- mov rsi, password_msg
- mov rdx, password_msg.len
- syscall
- mov rsi, password
- call read_string
- mov rax, sys_write
- mov rdi, stdout
- mov rsi, lf
- mov rdx, 1
- syscall
- mov rax, sys_write
- mov rdi, stdout
- mov rsi, welcome_msg
- mov rdx, welcome_msg.len
- syscall
- mov rax, sys_write
- mov rdi, stdout
- mov rsi, username
- mov rdx, 0xff
- syscall
- mov rax, sys_write
- mov rdi, stdout
- mov rsi, lf
- mov rdx, 1
- syscall
- mov rax, sys_write
- mov rdi, stdout
- mov rsi, entry_msg
- mov rdx, entry_msg.len
- syscall
- mov rax, sys_write
- mov rdi, stdout
- mov rsi, password
- mov rdx, 0xff
- syscall
- mov rax, sys_exit
- mov rdi, 0
- syscall
- ; proc read_string (char* destination)
- ; use:
- ; mov rsi, {buffer}
- ; call read_string
- read_string:
- mov rax, sys_read
- mov rdi, stdin
- ; mov rsi, buffer
- mov rdx, 0xff
- syscall
- ret
- section .bss
- buffer: resb 0xff
- username: resb 0xff
- password: resb 0xff
- section .data
- lf: db 0xa
- login_msg: db 'login: '
- .len equ $ - login_msg
- password_msg: db 'password: '
- .len equ $ - password_msg
- welcome_msg: db 'welcome, '
- .len equ $ - welcome_msg
- entry_msg: db 'your password is '
- .len equ $ - entry_msg
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement