terça-feira, 28 de setembro de 2010

Semana Assembly - Os Cinco Furiosos (Parte 1)

Essa semana vamos incrementar nosso estudo da linguagem Assembly aprendendo como executar os cinco comandos que vemos em quaisquer linguagem, hoje é dia do IF. Em Assembly podemos dar saltos estruturados através da verificação de uma variável denominada ZF:

Se ZF = 1 (comando JE ou JZ)
Se ZF >= 1 (comando JGE ou JNL)
Se ZF <= 1 (comando JLE ou JNG)
Se ZF > 1 (comando JG ou JNLE)
Se ZF < 1 (comando JL ou JNGE)

Além de outros tipos de saltos (em breve estarei postando no meu site um cartão com um resumo de todos os comandos em Assembly). Vamos ao programa então:

include emu8086.inc
ORG 100h

MOV AL, 25
MOV BL, 25
CMP AL, BL
JE igual
PUTC 'N'
JMP parar
igual:
PUTC 'S'
parar:
RET

END


Neste programa enviamos para duas variáveis AL e BL o valor 25, em seguida executamos o comando CMP (Compara) que caso sejam iguais fará ZF = 1 (esse é o real comparador), em seguida se o resultado de JE for ZF = 1 realizará um salto para o label denominado igual, caso contrário o código segue seu caminho e mostra N e em seguida saltando para o label denominado parar. Ao entrar no label denominado igual mostra o valor S.

Observe que isso é como um IF de cabeça para baixo, seu fluxograma é algo como:

INICIO PROGRAMA
  FAZER AL = 25
  FAZER BL = 25
  COMPARAR AL e BL e se iguais FAZER ZF = 1
  SE (ZF = 1) SALTAR PARA igual
  MOSTRAR N
  SALTAR PARA parar
  igual:
  MOSTRAR S
  parar:
FIM PROGRAMA


Para solidificar ainda mais seus conhecimentos teste este programa com os outros tipos de saltos.

Abraços e até a próxima
Fernando Anselmo

0 comentários:

Postar um comentário