section .data msg db "你好世界!",10 ; 10 is the ASCII code for a new line (LF) section .text global _start _start: mov rax, 1 mov rdi, 1 mov rsi, msg mov rdx, 13 syscall mov rax, 60 mov rdi, 0 syscall
如果要执行此程序,首先需要Netwide Assembler , nasm,因为此代码使用其语法。然后使用以下命令(假设代码在文件中helloworld.asm)。它们分别用于组装、链接和执行。
nasm -felf64 helloworld.asm
ldhelloworld.o-o helloworld
./helloworld
该代码利用了 Linux 的sys_write系统调用。在这里您可以看到 x86_64 架构的所有系统调用列表。当您还考虑write和exit的手册页时,您可以将上述程序转换为 C 程序,该程序具有相同的功能并且更具可读性:
#include <unistd.h> #define STDOUT 1 int main() { write(STDOUT, "你好世界!\n", 13); _exit(0); }
这里只需要两个命令来编译和链接(第一个)并执行:
gcc helloworld_c.c -o helloworld_c.
./helloworld_c