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

从高级语言到汇编

高级语言的控制流:


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

汇编的实现:

IF-ELSE 结构


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 循环


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 循环


; 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 等价于:


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

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

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


    原文链接:https://wenyiblog.top/2026/06/asm-10-branch-and-loop/

    首发于文艺技术笔记(wenyiblog.top),转载请注明出处。

    posted @ 2026-06-22 19:28  软件工程师文艺  阅读(1)  评论(0)    收藏  举报