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

Tutoriais
Home Informática Tutoriais MASM Cap. IV - Condições e Loops

Na Aldeia

Há 105 visitantes online

2796 registros
0 hoje
6 nesta semana
4 neste mês

Boas vindas: delilah

Estatística

Artigos: 847
Artigos lidos: 3919002
Arquivados: 41
Downloads: 416
Baixados: 161778
Glossário: 1198
Bibliografia: 24
JoomlaWatch Stats 1.2.7 by Matej Koval

Visitas de onde?

88,3%Brasil Brasil
9,2%Portugal Portugal
0,8%EUA EUA
0,2%Espanha Espanha
0,1%Alemanha Alemanha

Visitantes

Hoje: 484
Ontem: 1940
Esta semana: 2424
Semana passada: 12942
Este mês: 2424
Mês passado: 52379
Total: 123709

Registro/Login

Para fazer login ou registrar-se

Usuários registrados têm algumas regalias!

Dom

16

Dez

2007


14:03

Cap. IV - Condições e Loops PDF Imprimir Indique esta página
Avaliação: / 2
PiorMelhor 
Tutoriais - MASM + RadASM
Escrito por vovó Vicki   


Í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 ( Sáb, 26.04.2008 20:04 )
 

Topo

Topo