循环的大致格式是:
。。。。。。。
jmp label_b
label_a:
;while内的内容
。。。。。。。。。。。
label_b:
cmp eax, 5 ;while的判断条件
jle label_a
;while执行后的内容
。。。。。。。。。。。。
;>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>
如代码:
a = 2;
b = 1;
while( a <= 5 ){
b *= a;
++a;
}
printf("%d", b);
翻译成汇编代码为:
;赋值
mov [ebp-4], 2
mov [ebp-8], 1
label_a:
mov eax, [ebp-8]
imul eax, [ebp-4]
mov [ebp-8], eax
inc ebx[ebp-4]
label_b:
cmp [ebp-4], 5
jle label_a
push [ebp-8]
lea eax, offset aFormatString ; "%d"
push eax
call printf