分支与循环:JMP/LOOP/条件跳转的结构化编程

汇编没有 if/for/while,只有 JMP 和条件跳转。本文教你如何用底层指令实现高级语言的控制流结构,掌握循环计数、嵌套循环和复杂条件判断的汇编写法。

2

从高级语言到汇编

高级语言的控制流:

1
2
if (a > b) { c = 1; } else { c = 2; }
for (i=0; i<10; i++) { sum += i; }

汇编的实现:

IF-ELSE 结构

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
MOV AX, A
CMP AX, B
JLE ELSE_PART     ; 如果 A <= B,跳到 ELSE

MOV C, 1          ; IF 分支
JMP END_IF

ELSE_PART:
MOV C, 2          ; ELSE 分支

END_IF:

FOR 循环

1
2
3
4
5
6
7
8
MOV CX, 10        ; 循环次数
MOV AX, 0         ; sum = 0

LOOP_START:
ADD AX, CX        ; sum += i
LOOP LOOP_START   ; CX--, 若 CX≠0 则跳转

MOV SUM, AX

WHILE 循环

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
; while (a > 0) { a--; }
MOV AX, A

WHILE_CHECK:
CMP AX, 0
JLE WHILE_END     ; 如果 a <= 0,退出循环

DEC AX
JMP WHILE_CHECK

WHILE_END:
MOV A, AX

LOOP 指令详解

LOOP label 等价于:

1
2
DEC CX
JNZ label
  • CX 自动减 1
  • 若 CX ≠ 0 则跳转

总结

掌握这些模式,你就能用汇编实现任何高级语言的控制逻辑。汇编的跳转虽然原始,但逻辑清晰,性能极致。

下一篇:《子程序设计:参数传递、局部变量与调用约定》

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