Seeker's Memo

個人的で技術的かもしれないメモがメインのブログです。http://seekers.hatenablog.jp/about

アセンブリで”HelloWorld!!”(nasm,64bit,linux)

というわけサンプルコード

ファイル名:hello.asm

bits 64 ;64bitモードのプログラムであることを指定

section .text
global _start

_start:
    mov rax, 1 ; Linuxシステムコールのsys_writeを指定
    mov rdi, 1 ; stdoutを指定
    mov rsi, msg ; msgのアドレスを格納
    mov rdx, length ; lengthを格納
    syscall     ; 上記でシステムコール実行

    mov rax, 60 ; sys_exitを指定
    mov rdi, 0  ; return 0;
    syscall     ; システムコール実行して終了

section .data
    msg db 'Hello, World!! for NASM.', 0x0A   ;文字列データ配列 "0x0a"は改行
    length equ $ - msg ;文字列の長さ

ビルド

nasm -f elf64 hello.asm
ld -s -o a.out hello.o

./a.outで実行