下列是Intel彙編語法實現的 Hello, world!
程序。函數
;; hello.asm ;; nasm -f elf hello.asm; will output hello.o ;; ld -s -o hello hello.o ;; section, same to segment segment .data ; 數據段聲明, 下列代碼將放在數據段中 msg db "Hello, world!", 0xA ; 要輸出的字符串 len equ $ - msg ; 字串長度 section .text ; 代碼段聲明,下列代碼將放入代碼段中 global _start ; 指定入口函數,global修飾是爲了讓外部能夠引用_start _start: ; 在屏幕上顯示一個字符串 mov edx, len ; 參數三:字符串長度 mov ecx, msg ; 參數二:要顯示的字符串 mov ebx, 1 ; 參數一:文件描述符(stdout) mov eax, 4 ; 系統調用號(sys_write) int 0x80 ; 調用內核功能 ; 退出程序 mov ebx, 0 ; 參數一:退出代碼 mov eax, 1 ; 系統調用號(sys_exit) int 0x80 ; 調用內核功能
在Linux下能夠用nasm
編譯成ELF格式的目標文件,而後連接成可執行文件。code
nasm -f elf hello.asm #將生成hello.o ld -s -o hello hello.o #連接生成可執行文件hello.
執行./hello
就能看到"Hello, world!"的輸出了。字符串