从高级语言到汇编
高级语言的控制流:
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 等价于:
总结
掌握这些模式,你就能用汇编实现任何高级语言的控制逻辑。汇编的跳转虽然原始,但逻辑清晰,性能极致。
下一篇:《子程序设计:参数传递、局部变量与调用约定》