A Aldeia Numaboa ancestral ainda está disponível para visitação. É a versão mais antiga da Aldeia que eu não quis simplesmente descartar depois de mais de 10 milhões de pageviews. Como diz a Sirley, nossa cozinheira e filósofa de plantão: "Misericórdia, ai que dó!"

Se você tiver curiosidade, o endereço é numaboa.net.br.

Leia mais...

Informática Numaboa - Tutoriais e Programação

Cap. IV - Condições e Loops

Dom

16

Dez

2007


14:03

(5 votos, média 5.00 de 5) 


Loops

Nos loops estudaremos os bloqueios .while e .repeat/.until para criar laços que se repitam até que a condição que determinamos seja cumprida ou não.

.while

Este bloqueio criará um laço ou loop sempre e enquanto a condição for cumprida. Caso não se cumpra, o laço é interrompido. Sua sintaxe é a seguinte:

.while condição ; codigo .endw

Exemplo:

Mov eax,6 .while eax > 1 sub eax, 1 .endw

Este laço se repetirá sempre e enquanto eax for maior que 1. Se não for cumprida, o laço se romperá. Se não quisermos fazê-lo com bloqueios, também podemos fazer com instruções puras desta maneira:

Mov eax,6 jmp comprova loop: sub eax, 1 ; tiramos 1 do conteúdo de EAX comprova: cmp eax, 1 ja loop

Como imitamos o bloqueio .while, criamos um salto diretamente para a instrução cmp. Logo em seguida vem o salto JA (saltar se estiver acima), o que acontece caso eax estiver acima de 1. Este laço se romperá quando eax for 0.

.repeat / .until

Este laço funciona ao contrário de .while. Neste caso o laço terminará quando cumprir a condição e sua sintaxes é assim:

.repeat ;codigo .until condição

Exemplo:

mov eax,0 .repeat add eax, 1 ; somamos 1 ao conteúdo de eax .until eax > 6

O laço se repetirá até que eax seja maior que 6. Assim como no bloqueio .while, também podemos obter o mesmo resultado com instruções feitas desta maneira:

mov eax,0 loop: add eax, 1 cmp eax, 6 jnb loop

Vejamos o seguinte video com exemplos de loops (laços):

Vídeo 2
prog007_ha_b.exe

vovo Para assistir ao vídeo, faça o download de prog007_ha_b.exe.

Informações adicionais