0Pricing
Assembly Language & x86 Low-Level Systems Programming · 课时

您的第一个汇编程序

配置开发环境,在 x86 汇编中编写、汇编、链接并执行一个简单的“Hello, World!”程序。

您的第一个汇编程序 是 CoddyKit 上的免费 Assembly Language & x86 Low-Level Systems Programming 课时。 这是第 3 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Assembly Language & x86 Low-Level Systems Programming 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Assembly Language & x86 Low-Level Systems Programming 课程共包含 4 节课。

你的第一个汇编程序

现在要亲身实践:你将设置工具,用汇编语言编写"Hello, World!",并将其编译成可运行的可执行文件。这是最有趣的部分。

准备工作:汇编器和链接器

你需要两个工具:一个汇编器(我们使用 NASM)来生成目标文件,还有一个链接器(LD)将其转换为可运行的程序。

汇编程序的结构

汇编程序分为多个段。.data 存放已初始化的数据,如字符串;.text 存放你的指令,从 _start 开始。

存储"Hello, World!"

将消息存储在 .data 中。db 指令定义字节;我们添加一个换行符(0xA)并在其后计算长度。

section .data
    msg db 'Hello, World!', 0xA
    len equ $ - msg

系统调用:打印文本

要打印,需要通过系统调用向操作系统请求。在 Linux 上,这是 sys_write(编号 1):你需要传递输出、地址和字节计数。

section .text
    global _start

_start:
    ; sys_write (syscall number 1)
    mov rax, 1         ; syscall number for sys_write
    mov rdi, 1         ; file descriptor 1 (stdout)
    mov rsi, msg       ; address of the string to write
    mov rdx, len       ; number of bytes to write
    syscall            ; execute the system call

结束程序(系统调用)

完成后,程序必须通过第二个系统调用告诉操作系统停止:sys_exit(编号 60),传递退出状态——0 表示成功。

    ; sys_exit (syscall number 60)
    mov rax, 60        ; syscall number for sys_exit
    mov rdi, 0         ; exit status 0 (success)
    syscall            ; execute the system call

你的第一个完整程序!

这是完整的"Hello, World!"——保存为 hello.asm。.data 段包含消息,.text 打印它并退出。

section .data
    msg db 'Hello, World!', 0xA
    len equ $ - msg

section .text
    global _start

_start:
    ; sys_write (syscall number 1)
    mov rax, 1         ; syscall number for sys_write
    mov rdi, 1         ; file descriptor 1 (stdout)
    mov rsi, msg       ; address of the string to write
    mov rdx, len       ; number of bytes to write
    syscall            ; execute the system call

    ; sys_exit (syscall number 60)
    mov rax, 60        ; syscall number for sys_exit
    mov rdi, 0         ; exit status 0 (success)
    syscall            ; execute the system call

从汇编到目标文件

首先,进行汇编:nasm -f elf64 将 hello.asm 转换为目标文件 hello.o ——机器代码,但还不是可执行文件。

nasm -f elf64 hello.asm -o hello.o

创建可执行文件

目标文件还不是可运行的。链接器(ld)连接 _start 入口点并生成最终的可执行文件。

ld hello.o -o hello

执行并查看输出!

现在用 ./hello 运行它。"Hello, World!" 打印到你的控制台——恭喜,你刚运行了你的第一个 x86 汇编程序!

./hello

快速检查:过程步骤

你已经看到了从汇编代码创建可执行文件的完整过程。正确的步骤顺序是什么?

总结:你的第一个汇编程序

你完成了完整的工作流程:定义数据,调用 sys_write 和 sys_exit,然后汇编、链接和执行。接下来:寄存器和数据类型。

常见问题解答

「您的第一个汇编程序」课时是免费的吗?

是的 — 「您的第一个汇编程序」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Assembly Language & x86 Low-Level Systems Programming 课程的其余内容,请升级到 CoddyKit PRO。 Assembly Language & x86 Low-Level Systems Programming 课程共包含 4 节课。

「您的第一个汇编程序」这节课中我会学到什么?

配置开发环境,在 x86 汇编中编写、汇编、链接并执行一个简单的“Hello, World!”程序。 你通过在浏览器中直接运行的动手代码来练习 Assembly Language & x86 Low-Level Systems Programming,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Assembly Language & x86 Low-Level Systems Programming 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Assembly Language & x86 Low-Level Systems Programming 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 3 节课,共 4 节。

「您的第一个汇编程序」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Assembly Language & x86 Low-Level Systems Programming 课中编写并运行代码吗?

能。每节 Assembly Language & x86 Low-Level Systems Programming 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. 什么是汇编语言
  2. x86 架构基础
  3. 您的第一个汇编程序
  4. 汇编、链接与运行工具链
← 返回 Assembly Language & x86 Low-Level Systems Programming