第一条汇编程序:Hello World 的底层实现
经典的 Hello World
在高级语言中,print("Hello World") 只需要一行。在汇编中,你需要:
1. 定义数据段
2. 设置显示功能号
3. 调用中断
4. 设置退出功能号
5. 再次调用中断
完整源码
DATA SEGMENT
MSG DB 'Hello, Assembly World!$'
DATA ENDS
CODE SEGMENT
ASSUME CS:CODE, DS:DATA
START:
MOV AX, DATA
MOV DS, AX ; 初始化 DS 寄存器
MOV DX, OFFSET MSG ; 字符串偏移地址放入 DX
MOV AH, 09h ; DOS 中断 09h: 显示字符串
INT 21h ; 调用中断
MOV AH, 4Ch ; DOS 中断 4Ch: 退出程序
INT 21h
CODE ENDS
END START
逐行解析
1. 数据段定义
DATA SEGMENT
MSG DB 'Hello, Assembly World!$'
DATA ENDS
2. 初始化 DS
MOV AX, DATA
MOV DS, AX
CPU 不允许直接将立即数送入段寄存器,必须通过通用寄存器中转。
3. 调用显示中断
MOV AH, 09h
MOV DX, OFFSET MSG
INT 21h
4. 安全退出
MOV AH, 4Ch
INT 21h
如果不写退出代码,程序会继续执行内存中的随机数据,导致崩溃。
编译与运行
masm hello.asm; # 生成 hello.obj
link hello.obj; # 生成 hello.exe
hello.exe # 运行
总结
第一个汇编程序虽然只有十几行,但它涵盖了汇编的核心要素:段定义、寄存器操作、中断调用。
下一篇:《8086 指令系统全景图:数据传送、算术运算与逻辑操作》
原文链接:https://wenyiblog.top/2026/06/asm-04-first-program/
首发于文艺技术笔记(wenyiblog.top),转载请注明出处。

浙公网安备 33010602011771号