Aldeia Numaboa
Um portal diferente em Português do Brasil
Informática da Aldeia

Tutoriais
Home Informática Tutoriais e Programação MASM+RadASM Cap. IV - Condições e Loops

Na Aldeia

Há 119 visitantes online

3630 registros
0 hoje
14 nesta semana
4 neste mês

Boas vindas: flor

Estatística

Membros: 3639
Artigos: 1045
Links: 90
Leituras: 6681380

Login



Kanji da hora




Faça contato






Dom

16

Dez

2007


13:03

Cap. IV - Condições e Loops PDF Imprimir Indique esta página
(4 votos, média 5.0 de 5)
Escrito por Alan Moreno   


Índice do Artigo
Cap. IV - Condições e Loops
Exemplo
Instruções de Salto
Loops
Analisando os programas
Adicionando um ícone
Downloads
Todas as páginas

Nível Intermediário

Masm32+RadASM

Capítulo IV: Condições e Loops

Escrito por: ^A|An M0r3N0^
Conselheiro: RedH@wk
Tradução: ~Uglinho~
O presente texto foi escrito para fins educacionais e de pesquisa e é de livre distribuição contanto que se preserve o conteúdo e os direitos do autor.

O Masm32 pode utilizar o bloqueio .if (condição) e também .while, .repeat/.until (Loops). Aprenderemos duas formas de utilizá-las. A primeira será utilizando bloqueios, a outra será usando instruções CMP e JXX.

Condições

Usando o bloqueio .IF - O MASM pode fazer comparações simples e complexas de forma fácil. Conheça a sintaxe.

Uma comparação simples seria desta maneira:

SimplesSimples mais .else
.if Condição
     ; Se cumprir a condição, faça algo aqui
.endif
.if Condição
     ; Se cumprir a condição, faça algo aqui
.else
     ; Caso contrário, faça algo aqui
.endif

Se desejar fazer comparações sequenciais:

SequencialSequencial mais .else
.if Condição
     ; Se cumprir a condição, faça algo aqui
.elseif
     ; Se cumprir a condição, faça algo mais aqui
.endif
.if Condição
     ; Se cumprir a condição, faça algo aqui
.elseif
     ; Se cumprir a condição, faça algo mais aqui
.else
     ; Se não cumpriu nenhuma condição,
     ;faça algo aqui
.endif

Antes de começar com os exercícios, observemos a seguinte tabela de operadores para as comparações:

Operadores de Comparação
==igual
!=não igual
>maior
>=maior ou igual
<menor
<=menor ou igual
Operadores de Multi-comparação
&&AND lógico "E"
||OR lógico "OU"
Operador para verificar o estado das bandeiras ( flags) do processador
CARRY?bit do Carry setado
OVERFLOW?bit do Overflow setado
PARITY?bit da Paridade setado
SIGN?bit de Sinal setado
ZERO?bit do Zero setado

No exercício a seguir faremos uma série de comparações. Para isto utilizaremos a biblioteca rvlcnrand.lib para gerar valores inteiros aleatórios. Os algoritmos geradores foram criados por Randall Hyde, desenvolvedor do compilador HLA (High Level Assembly) e passado para o MASM32 por minha pessoa.

Biblioteca rvlcnrand.lib
FunçãoDescrição
randzimeCom esta função criamos um ponto ao acaso para que possa ser utilizado pelas 4 funções seguintes: random, range, uniform, urange. Desta maneira sempre se poderá gerar de forma aleatória.
randomGera números aleatórios uniformemente distribuídos utilizando um algoritmo linear. O resultado é devolvido em EAX.
Invoke random
rangeGera um número aleatório usando a função random, levando em conta o limite estabelecido. O resultado é devolvido em EAX.
Invoke range, inicio, final
uniformEsta função gera um novo número aleatório uniformemente distribuído em cada chamada. O resultado é devolvido em EAX.
Invoke uniform
urangeGera um número aleatório usando a função urange levando em conta o limite estabelecido. O resultado é devolvido em EAX.
Invoke urange, inicio, final


Última atualização ( Qui, 18.06.2009 11:18 )
 

Topo

Topo

Exceto onde especificamente citado, todo material deste site está sob Licença Creative Commons