NASM Intro - Compile and Link



1. hello.S


section .data
hello:     db 'Hello world!',10    ; 'Hello world!' plus a linefeed character
helloLen:  equ $-hello             ; Length of the 'Hello world!' string
                                   ; (I'll explain soon)

section .text
global _start

_start:
mov eax,4            ; The system call for write (sys_write)
mov ebx,1            ; File descriptor 1 - standard output
mov ecx,hello        ; Put the offset of hello in ecx
mov edx,helloLen     ; helloLen is a constant, so we don't need to say
                     ;  mov edx,[helloLen] to get it's actual value
int 80h              ; Call the kernel

mov eax,1            ; The system call for exit (sys_exit)
mov ebx,0            ; Exit with return code of 0 (no error)
int 80h


2. Compile & Link

nasm -felf64 hello.S
ld -o hello.x hello.o


3. Run

./hello.x

Hello world! 

你可能感兴趣的:(NASM Intro - Compile and Link)