在 Linux 下使用汇编语言编写 “Hello, World!” 程序,通常使用 x86_64 架构(64位)或 x86 架构(32位),下面我将分别给出两种架构的代码示例,并说明如何编译和运行。
✅ 一、x86_64 架构(64位 Linux)
📄 汇编代码:hello64.asm
section .data
msg db "Hello, World!", 10 ; 字符串 + 换行符
section .text
global _start
_start:
; 系统调用:sys_write (1)
mov rax, 1 ; 系统调用号:sys_write
mov rdi, 1 ; 文件描述符:stdout
lea rsi, [msg] ; 缓冲区地址
mov rdx, 13 ; 写入字节数
syscall ; 触发系统调用
; 系统调用:sys_exit (60)
mov rax, 60 ; 系统调用号:sys_exit
xor rdi, rdi ; 退出码:0
syscall ; 触发系统调用
🔧 编译与运行
# 使用 nasm 汇编 nasm -f elf64 hello64.asm -o hello64.o # 链接生成可执行文件 ld hello64.o -o hello64 # 运行 ./hello64
✅ 二、x86 架构(32位 Linux)
📄 汇编代码:hello32.asm
section .data
msg db "Hello, World!", 10 ; 字符串 + 换行符
section .text
global _start
_start:
; 系统调用:sys_write (4)
mov eax, 4 ; 系统调用号:sys_write
mov ebx, 1 ; 文件描述符:stdout
mov ecx, msg ; 缓冲区地址
mov edx, 13 ; 写入字节数
int 0x80 ; 触发系统调用
; 系统调用:sys_exit (1)
mov eax, 1 ; 系统调用号:sys_exit
xor ebx, ebx ; 退出码:0
int 0x80 ; 触发系统调用
🔧 编译与运行
# 使用 nasm 汇编 nasm -f elf32 hello32.asm -o hello32.o # 链接生成可执行文件 ld hello32.o -o hello32 # 运行 ./hello32
📌 说明
| 项目 | x86_64 | x86 |
|---|---|---|
| 系统调用接口 | syscall |
int 0x80 |
| 系统调用号寄存器 | rax |
eax |
| 参数寄存器 |
| ebx, ecx, edx |
| 系统调用号 | sys_write=1, sys_exit=60 | sys_write=4, sys_exit=1 |
🛠 安装必要工具
如果你还没有安装 nasm 和 ld,可以使用以下命令安装:
# Debian/Ubuntu sudo apt install nasm binutils # CentOS/RHEL sudo yum install nasm binutils
✅ 输出结果
无论使用哪种架构,运行后都会输出:
Hello, World!
如需进一步学习,可以探索:
- 如何读取用户输入
- 如何创建文件
- 如何使用 C 库函数(如
printf)
欢迎继续提问!
首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/483349.html



