NASM · COM 可执行文件

在 Windows 32 位环境下用 NASM 生成并运行 COM 程序

从环境配置到看到 "Hello,world" 输出的完整操作指南

01  /  前置条件

运行环境要求

项目 要求
操作系统 32 位 Windows(XP / Win7 / Win10 均可,可直接运行 COM 文件
汇编器 NASM 2.12(或更高版本)
02  /  显示文件扩展名

让 Windows 显示文件名后缀

Windows 默认隐藏已知文件类型的扩展名,这会导致你看到的 dp61.asm 实际可能是 dp61.asm.txt,NASM 将无法识别。必须先关闭隐藏。

1
打开文件资源管理器

Win + E 打开文件资源管理器。

2
勾选「文件扩展名」

点击顶部菜单栏的 「查看」 选项卡,在工具栏中找到并勾选:

☑ 文件扩展名

勾选后,所有文件都会显示完整的后缀名,例如 dp61.asmdp61.comreadme.txt

03  /  配置 PATH 环境变量

让系统在任意位置识别 nasm 命令

安装 NASM 后,如果在 cmd 中输入 nasm 提示 'nasm' is not recognized,说明系统不知道 nasm.exe 在哪里。需要把 NASM 的安装路径加入 PATH 环境变量。

1
打开环境变量设置

Win + S 搜索 「环境变量」,点击 「编辑系统环境变量」。在弹出的"系统属性"窗口中,点击右下角的 「环境变量」 按钮。

2
编辑 Path 变量

在「用户变量」区域,找到名为 Path 的变量,双击打开编辑界面。

用户变量 vs 系统变量:修改「用户变量」只对当前用户生效,修改「系统变量」对所有用户生效。一般修改用户变量即可。
3
添加 NASM 路径

点击 「新建」,输入 NASM 所在的文件夹路径,例如:

C:\Users\m\AppData\Local\bin\NASM

依次点击「确定」关闭所有窗口,设置生效。

注意:设置完成后必须关闭并重新打开 cmd,新的 PATH 才会生效。在已打开的 cmd 窗口中输入 nasm 仍然会报错。
04  /  操作步骤

从创建文件到运行程序

1
新建工作文件夹

在任意位置创建一个专门存放汇编源码的文件夹,例如:

C:\ASM

后续的源文件和生成的可执行文件都放在这里,便于管理。

2
创建汇编源文件

用记事本(或任意文本编辑器)编写源代码,后缀必须 .asm,保存到工作文件夹中。

以下是演示程序 dp61.asm 的完整源代码:

;演示程序dp61.asm segment .text ;命名段text org 100H ;段内偏移从100H开始计算 ; MOV AX, CS MOV DS, AX ;使数据段与代码段相同 ; MOV DX, hello ;DX=信息hello的段内偏移 MOV AH, 9 INT 21H ;显示hello开始的字符串(以$结尾) ; MOV AH, 4CH INT 21H ;返回操作系统 ; hello db "Hello,world", 0DH, 0AH, '$' ;定义字符串信息 ;===============================
3
打开命令提示符(cmd),进入工作文件夹

Win + R,输入 cmd,回车,打开命令提示符窗口。然后切换到工作文件夹:

C:\Users\m> cd C:\ASM C:\ASM> ← 现在已经在工作文件夹中
4
使用 NASM 汇编,生成 COM 文件

输入以下命令:

C:\ASM> nasm dp61.asm -o dp61.com

如果没有任何输出,说明汇编成功。此时文件夹中会多出一个 dp61.com 文件。

命令格式:nasm 源文件名 -o 目标文件名。目标文件名可以随意取,但后缀必须为 .com,因为这决定了 Windows / DOS 将它当作 COM 格式来加载。

如果报错 'nasm' is not recognized,说明 PATH 环境变量未配置(见第 03 节)。临时解决方案是使用完整路径:

C:\ASM> C:\Users\m\AppData\Local\bin\NASM\nasm dp61.asm -o dp61.com
5
运行 COM 程序

在同一个命令提示符窗口中,直接输入文件名:

C:\ASM> dp61.com

屏幕输出:

Hello,world

程序执行完毕后,自动返回命令提示符。

05  /  流程总结

完整命令一览

① 创建工作文件夹 C:\> mkdir C:\ASM ② 进入工作文件夹 C:\> cd C:\ASM ③ 将写好的 dp61.asm 保存到 C:\ASM 下 ④ 汇编(生成 COM 文件) C:\ASM> nasm dp61.asm -o dp61.com ⑤ 运行 C:\ASM> dp61.com Hello,world