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) 


Analisando o prog007 - Criando loop com o bloqueio .while:

Biblioteca user32.lib FindWindow,NULL,addr MsgTitulo
FindWindow
Fig. 2

Esta função busca o título da janela ou também a classe da janela e, se a encontra, devolve o manipulador (handle) da janela para o registro EAX. Para mais informação revisem a documentação Win32 Programmer's Reference Fig. 2.

Linha 9

Linha 9 - Buscamos o título da janela. Se a encontrar, devolverá o manipulador (handle) em EAX.

Linha 10 - Criamos um laço com o bloqueio .while. Se EAX for maior que 1, o laço se realizará sempre e enquanto EAX for maior do que 1. É por isto que foi posta novamente a função Findwindow antes de .endw, na linha 12, para que o laço prossiga até que não encontre o título da janela. Se não o encontrar, EAX será 0 e o laço se romperá.

Analisando o prog007a - Criando laço com o bloqueio .repeat/.until:

Linha 10

Linha 9 - Criamos um ponto ao acaso para que possa criar valores aleatórios com a função range.

Linha 10 - A função range devolve em EAX um valor compreendido entre 0 e 100.

Este laço se repetirá até que o conteúdo de EBX seja maior do que EAX. É por isto que se soma 1 a EBX a partir de 0. Como se sabe, o valor de EAX é desconhecido porque este valor é determinado pela função range.

Biblioteca kernel32.lib wsprintf,addr buffer,addr Msgtexto,ebx

Com esta função passamos o conteúdo de ebx para o formato ASCII, mas este não é o único formato para o qual podemos passar. Vejamos o seguinte exemplo:

Linhas

Agora mostraremos 2 valores, em decimal e hexadecimal. Outra coisa importante é que a função wsprintf só tem 2 parâmetros fixos, os outros são opcionais. Só podemos adicioná-los quando queremos passar de um formato para outro como, por exemplo:

  • %d para formato decimal
  • %x para formato hexadecimal

Nossa cadeia tem 2 formatos:

MsgTexto db "Decimal: %d ; hexadecimal: %x" ,0

Por isto é necessário colocar 2 parâmetros a mais na nossa função que, no caso, são eax e ebx. Vejamos como se alinha cada registro com seu formato:

Alinhamento

Informações adicionais