global main ; 告訴連結器 main 是外部可見的符號 (入口點) extern scanf ; 使用外部 C 函式庫 (e.g. musl) 的 scanf () extern printf ; 使用外部 C 函式庫 (e.g. musl) 的 printf () section .data ; 定義已初始化值的部份 scanf_str: db "%d", 0 ; scanf () 用的格式字串 printf_str: db "Input is %d", 10; printf () 用的格式字串 section .bss ; 定義未初始化值的部份 scanf_in: resb 4 ; 儲存 scanf () 輸入值的變數,4 位元大小 section .text main: ; 程式入口點名稱 push rbp ; 將舊的基底指標推入堆疊 mov rbp, rsp ; 設定新的基底指標 (形成 stack frame) lea rdi, [rel scanf_str] ; scanf () 用的格式字串位址儲存至 rdi 暫存器 lea rsi, [rel scanf_in] ; 儲存 scanf () 輸入值的變數位址儲存至 rsi 暫存器 call scanf ; 呼叫 C 函式庫的 scanf () mov eax, [rel scanf_in] ; 將 scanf () 讀入的整數寫到 eax 暫存器 movsx rsi, eax ; 擴展至 64bit ? lea rdi, [rel printf_str] ; 將 printf () 用的格式字串位址儲存至 rdi 暫存器 call printf ; 呼叫 C 函式庫的 printf () xor eax, eax ; return 0 pop rbp ; 恢復呼叫者的基底指標 ret ; 返回至呼叫者,結束程式