高级语言的while循环如下:
while( val1 < val2 )
{
val1++;
val2 --;
}
用汇编语言实现这个结构时,可以很方便地改变循环条件,当条件为真时,跳转到 endwhile。
.data
val1 word 2
val2 word 9
.code
main proc
nop
begin_while:
mov ax, val1
cmp ax, val2
jnl end_while
inc word ptr val1
dec word ptr val2
jmp begin_while
end_while:
invoke ExitProcess, 0
main endp
end main
高级语言尤其善于表示嵌套的控制结构。如下 C++ 代码所示,在一个 WHILE 循环中有嵌套 IF 语句。它计算所有大于 sample 值的数组元素之和:
int array[] = {10,60,20,33,72,89,45,65,72,18};
int sample = 50;
int ArraySize = sizeof array / sizeof sample;
int index = 0;
int sum = 0;
while( index < ArraySize )
{
if( array[index] > sample )
{
sum += array[index];
}
index++;
}
.data
array sdword 10,60,20,33,72,89,45,-65,-72,18
sample sdword 50
sum dword 0
.code
main proc
nop
mov eax, sum
mov edx, sample
mov ecx, lengthof array
mov esi, 0
begin_while:
cmp esi, ecx
jae end_while
cmp array[esi*type array], edx
jng L1
add eax, array[esi*type array]
L1: inc esi
jmp begin_while
end_while:
mov sum, eax
invoke ExitProcess, 0
main endp
end main