10 个经典汇编程序实例:从排序到字符串处理

理论不如代码。本文提供 10 个完整可运行的汇编程序:冒泡排序、字符串反转、进制转换、阶乘计算、斐波那契数列等,附逐行解析。

2

实例 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

更多实例

  1. 字符串反转:双指针交换
  2. 二进制转 ASCII:逐位提取
  3. 最大公约数:辗转相除法
  4. 数组求和:循环累加
  5. 字符统计:频率数组

总结

这些实例覆盖了汇编编程的常见模式。动手敲一遍,你的汇编水平会有质的飞跃。

下一篇:《汇编语言实验指导:5 个动手实验从易到难》

广告
广告位预留中 (728x90)