理论不如代码。本文提供 10 个完整可运行的汇编程序:冒泡排序、字符串反转、进制转换、阶乘计算、斐波那契数列等,附逐行解析。
实例 1:冒泡排序
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| BUBBLE_SORT PROC
MOV CX, N-1 ; 外层循环
OUTER:
MOV BX, 0
PUSH CX
INNER:
MOV AL, ARR[BX]
CMP AL, ARR[BX+1]
JLE NO_SWAP
XCHG AL, ARR[BX+1]
MOV ARR[BX], AL
NO_SWAP:
INC BX
LOOP INNER
POP CX
LOOP OUTER
RET
BUBBLE_SORT ENDP
|
实例 2:字符串长度
1
2
3
4
5
6
7
8
9
10
11
12
13
| STRLEN PROC
MOV CX, 0
MOV BX, OFFSET STR
NEXT:
CMP BYTE PTR [BX], 0
JE DONE
INC CX
INC BX
JMP NEXT
DONE:
MOV AX, CX
RET
STRLEN ENDP
|
实例 3:十六进制转十进制
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
| HEX2DEC PROC
MOV CX, 0
MOV BX, 10
CONVERT:
MOV DX, 0
DIV BX ; AX ÷ 10
PUSH DX ; 余数入栈
INC CX
CMP AX, 0
JNE CONVERT
PRINT:
POP DX
ADD DL, '0'
MOV AH, 02h
INT 21h
LOOP PRINT
RET
HEX2DEC ENDP
|
实例 4:阶乘
1
2
3
4
5
6
7
8
| FACTORIAL PROC
MOV AX, 1
MOV CX, N
FACT_LOOP:
MUL CX ; AX * CX → DX:AX
LOOP FACT_LOOP
RET
FACTORIAL ENDP
|
实例 5:斐波那契数列
1
2
3
4
5
6
7
8
9
10
11
12
13
| FIBONACCI PROC
MOV AX, 0
MOV BX, 1
MOV CX, N
FIB_LOOP:
MOV DX, AX
ADD DX, BX ; DX = AX + BX
MOV AX, BX
MOV BX, DX
; 打印 AX
LOOP FIB_LOOP
RET
FIBONACCI ENDP
|
更多实例
- 字符串反转:双指针交换
- 二进制转 ASCII:逐位提取
- 最大公约数:辗转相除法
- 数组求和:循环累加
- 字符统计:频率数组
总结
这些实例覆盖了汇编编程的常见模式。动手敲一遍,你的汇编水平会有质的飞跃。
下一篇:《汇编语言实验指导:5 个动手实验从易到难》