x86汇编_WHILE循环_笔记_40

高级语言的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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值