Informática Numaboa - Tutoriais e Programação
Cap. IV - Condições e Loops
Dom 16 Dez 2007 14:03 |
- Detalhes
- Categoria: MASM + RadASM
- Atualização: Quinta, 18 Junho 2009 11:18
- Autor: Alan Moreno
- Acessos: 10248
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:
Simples | Simples mais .else |
Se desejar fazer comparações sequenciais:
Sequencial | Sequencial mais .else |
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ção | Descrição |
randzime | Com 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. |
random | Gera números aleatórios uniformemente distribuídos utilizando um algoritmo linear. O resultado é devolvido em EAX. Invoke random |
range | Gera 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 |
uniform | Esta função gera um novo número aleatório uniformemente distribuído em cada chamada. O resultado é devolvido em EAX. Invoke uniform |
urange | Gera 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 |
- Anterior
- Próximo >>