Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/rodolfobandeira/assembly-linux-studies
https://github.com/rodolfobandeira/assembly-linux-studies
assembly nasm ubuntu
Last synced: 14 days ago
JSON representation
- Host: GitHub
- URL: https://github.com/rodolfobandeira/assembly-linux-studies
- Owner: rodolfobandeira
- Created: 2016-07-11T01:25:43.000Z (over 8 years ago)
- Default Branch: master
- Last Pushed: 2017-12-08T02:30:38.000Z (about 7 years ago)
- Last Synced: 2024-12-18T12:12:00.323Z (about 2 months ago)
- Topics: assembly, nasm, ubuntu
- Language: Assembly
- Size: 3.91 KB
- Stars: 2
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
#### Assembly Linux Studies (64 bits arquitecture)
`nasm -f elf64 -o nasm_64_bits_hello_world.o nasm_64_bits_hello_world.asm`
`ld -o nasm_64_bits_hello_world nasm_64_bits_hello_world.o`
```
section .data
msg db 'Rodolfo Bandeira', 0xA ; our string
len equ $ - msg ; length of our stringsection .text
global _start
; -----------------------------------------
; 64 bit registers:
; -----------------------------------------
; rax, rbx, rcx, rdx,
; rsi, rdi,
; rsp,
; r8, r9, r10, r11, r12, r13, r14, r15, r16
; -----------------------------------------
;
; We're going to use the system call bellow:
; ssize_t sys_write(unsigned int fd, const char * buf, size_t count)
;
; This is the registers used for the parameters
; -------------------------------------------------------------------------------
; System Call | rdi | rsi | rdx |
; -------------------------------------------------------------------------------
; sys_write (1) | unsigned int fd | const char *buf | size_t count |
; sys_exit (60) | int error_code | | |
; -------------------------------------------------------------------------------
_start:
mov rax, 0x01 ; system call number (sys_write)
mov rdi, 0x01 ; file descriptor
mov rsi, msg ; message
mov rdx, len ; message length
syscall ; call kernelmov rax, 0x3C ; system call (sys_exit) 60 = 0x3C
mov rdi, 0x00 ; 0 means no error
syscall ; call kernel; To compile:
;
; nasm -f elf64 -o nasm_64_bits_hello_world.o nasm_64_bits_hello_world.asm
; ld -o nasm_64_bits_hello_world nasm_64_bits_hello_world.o
; ./nasm_64_bits_hello_world
```#### Reference:
- http://0xax.blogspot.ca/2014/08/say-hello-to-x64-assembly-part-1.html
- Free Assembly 64 bits + Ubuntu E-book: http://www.egr.unlv.edu/~ed/x86.html