linux汇编helloworld怎么写?linux汇编语言入门教程

在 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                       ; 触发系统调用

linux汇编helloworld怎么写?linux汇编语言入门教程

汇编语言(基于Linux)
加载中
汇编语言(基于Linux)

🔧 编译与运行

# 使用 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                      ; 触发系统调用

linux汇编helloworld怎么写?linux汇编语言入门教程

🔧 编译与运行

# 使用 nasm 汇编
nasm -f elf32 hello32.asm -o hello32.o
# 链接生成可执行文件
ld hello32.o -o hello32
# 运行
./hello32

📌 说明

项目 x86_64 x86
系统调用接口 syscall int 0x80
系统调用号寄存器 rax eax
参数寄存器

linux汇编helloworld怎么写?linux汇编语言入门教程

rdi, rsi, rdx

ebx, ecx, edx
系统调用号sys_write=1, sys_exit=60sys_write=4, sys_exit=1

🛠 安装必要工具

如果你还没有安装 nasmld,可以使用以下命令安装:

# Debian/Ubuntu
sudo apt install nasm binutils
# CentOS/RHEL
sudo yum install nasm binutils

✅ 输出结果

无论使用哪种架构,运行后都会输出:

Hello, World!

如需进一步学习,可以探索:

  • 如何读取用户输入
  • 如何创建文件
  • 如何使用 C 库函数(如 printf

欢迎继续提问!

首发原创文章,作者:世雄 - 原生数据库架构专家,如若转载,请注明出处:https://idctop.com/article/483349.html

(0)
上一篇 2026年7月11日 21:14
服务器主机进程很多怎么办?服务器进程多占用内存怎么解决
下一篇 2026年7月11日 21:16

相关推荐

  • Linux串口write怎么写?Linux串口编程write函数用法

    在Linux系统中,向串口写入数据的核心方法是使用标准C库函数write()配合open()打开设备节点,关键在于正确配置波特率、数据位、停止位及校验位等底层参数,并处理非阻塞模式下的缓冲区溢出问题,串口通信是嵌入式开发、工业控制以及物联网设备调试中最基础也是最核心的交互方式,无论是通过USB转TTL模块连接单……

    2026年7月6日
    9200
  • linux memcache怎么查看状态?memcached查看命令大全

    在Linux环境下查看Memcached状态,最核心且高效的方法是使用telnet或nc命令连接11211端口后执行stats指令,或者通过安装memcached-tool工具进行可视化分析,Memcached作为内存中的键值对缓存系统,其运行状态的透明度直接关系到后端数据库的压力和整个应用系统的响应速度,当开……

    2026年7月6日
    16100
  • 如何在linux安装phpcms?linux安装phpcms详细步骤

    在Linux环境下安装PHPCMS最稳妥的方案是部署LNMP环境(Linux+Nginx+MySQL+PHP),通过源码编译或包管理器安装依赖后,解压CMS包并配置虚拟主机即可实现网站上线,很多站长在搭建内容管理系统时,往往被Linux复杂的命令行劝退,其实只要理清逻辑,整个过程并不晦涩,PHPCMS v9作为……

    2026年7月4日
    12900
  • Docker在Windows和Linux上怎么选?docker安装教程

    Docker在Windows和Linux上的核心差异在于底层架构与性能表现:Linux原生支持且性能无损,是生产环境首选;Windows通过WSL 2虚拟化层运行,虽兼容性极佳但存在轻微开销,适合开发与测试场景,Docker在Linux与Windows上的底层架构差异理解Docker在不同操作系统中的运行机制……

    2026年7月9日
    9700
  • linux如何查看openssh版本?linux查看openssh版本命令

    在 Linux 系统中查看 OpenSSH 版本及配置信息,最核心的命令是 ssh -V 查看客户端版本,sshd -V 查看服务端版本,而完整的服务状态与配置文件路径则需通过 systemctl status sshd 和 cat /etc/ssh/sshd_config 来获取,OpenSSH 作为 Lin……

    2026年7月8日
    11300
  • Linux和Windows下Docker怎么用?docker安装教程

    Linux、Docker和Windows并非互斥选项,而是现代IT架构中互补的基石:Linux提供底层稳定性,Docker实现应用隔离与高效部署,Windows则凭借强大的桌面生态与兼容性满足特定业务需求,三者结合能构建出兼顾性能、安全与开发效率的混合云环境,在2026年的技术语境下,单一操作系统的边界正在模糊……

    2026年7月6日
    8010
  • linux bash补丁怎么打?linux bash漏洞修复方法

    Linux Bash补丁的核心在于修复Shellshock等关键漏洞,建议通过系统包管理器执行sudo apt update && sudo apt upgrade或yum update来应用官方安全更新,这是保障服务器安全的最低成本且最有效的方案,在Linux生态中,Bash作为最广泛使用的命……

    2026年7月7日
    5000
  • Linux ALSA PCM是什么?alsa pcm编程入门教程

    在 Linux 系统中,ALSA(Advanced Linux Sound Architecture,高级 Linux 声音架构)是核心的音频子系统,而 PCM(Pulse Code Modulation,脉冲编码调制)则是 ALSA 中用于处理原始数字音频数据的核心概念,以下是关于 Linux ALSA PC……

    2026年7月10日
    16100
  • Linux系统打包怎么操作?Linux系统打包教程

    Linux系统打包的核心在于根据目标环境选择归档工具(如tar、zip)或容器化方案(如Docker),并配合压缩算法(如gzip、xz)以平衡文件体积与解压速度,实现高效的数据传输与部署,在Linux运维和开发场景中,数据备份、软件分发以及环境迁移是日常高频操作,很多初学者容易混淆“归档”与“压缩”的概念,导……

    2026年7月6日
    17500
  • linux怎么卸载iso镜像文件?linux卸载iso镜像文件教程

    在Linux系统中卸载ISO镜像的标准操作是执行umount命令解除挂载点,若提示“目标忙”,则需先使用lsof或fuser查找并终止占用进程,最后通过rm删除ISO文件即可彻底清理,许多新手用户面对挂载后的ISO文件时,往往不知道如何安全移除,甚至直接尝试删除文件导致报错,Linux对文件系统的管理有着严格的……

    2026年7月5日
    1400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注