彙編語言入門HelloWorld

 閱讀大約需要1分鐘

彙編語言的HelloWorld 代碼如下:

section .data
msg db "Hello World!",0ah
len equ $-msg
section .text
global _start
_start:
;把字符串寫到標準輸出
mov eax,4 ;   4號系統調用(sys_write)
mov ebx,1 ;   ebx送1表示標準輸出 file handle(stdout)
mov ecx,msg ; 字符串的首地址送入ecx
mov edx,$len ;  字符串的長度送入edx
int 80h;    輸出字串,調用內核
;退出
mov eax,1;   1號系統調用(sys_exit)
mov ebx,0; 返回0 exit code
int 80h ;    結束,調用內核

msg是在數據段(.data)中定義的字符串標號,db表示define byte。也就是說msg表示一個字節數組,0ah即十進制10是換行符的ASCII碼值。

len是字符串長度的標號,equ表示等同於,$是一個指示當前位置的變量,表示len字節數組的最後一個字節後面的那個字節的位置,$減去msg(字符串數組的第一個字節的位置),得到的恰好是字節數組的長度,這個長度值由彙編器在編譯時計算得到。

linux x86_64下編譯 nasm -f elf64 hello.asm 連接 ld -s -o hello hello.o 執行 ./hello