






Estude fácil! Tem muito documento disponível na Docsity
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Prepare-se para as provas
Estude fácil! Tem muito documento disponível na Docsity
Prepare-se para as provas com trabalhos de outros alunos como você, aqui na Docsity
Encontra documentos específicos para os exames da tua universidade
Prepare-se com as videoaulas e exercícios resolvidos criados a partir da grade da sua Universidade
Responda perguntas de provas passadas e avalie sua preparação.
Ganhe pontos para baixar
Ganhe pontos ajudando outros esrudantes ou compre um plano Premium
Instruções de controle de fluxo
Tipologia: Notas de estudo
1 / 12
Esta página não é visível na pré-visualização
Não perca as partes importantes!







Instruções de laço ( loop ) e de salto ( jump ) permitem que:
6.1 A instrução de comparação CMP destino,fonte CMP (Compare) compara os conteúdos destino e fonte, que podem ser:
Tipos de saltos condicionais Símbolo Descrição Condições Saltos sinalizados JG ou JNLE salto se maior do que OU salto se não menor do que ou igual a
JGE ou JNL salto se maior do que ou igual a OU salto se não menor do que
JL ou JNGE salto se menor do que OU salto se não maior do que ou igual a
JLE ou JNG salto se menor do que ou igual a OU salto se não maior do que
Saltos não-sinalizados JA ou JNBE salto se acima de OU salto se não abaixo de ou igual a
JAE ou JNB salto se acima de ou igual a OU salto se não abaixo de
JB ou JNAE salto se abaixo de OU salto se não acima de ou igual a
JBE ou JNA salto se abaixo de ou igual a OU salto se não acima de
Saltos de Flag simples JE ou JZ salto se igual OU salto se igual a zero
JNE ou JNZ salto se não igual OU salto se não igual a zero
JC salto se há VAI-UM ( carry ) CF = 1 JNC salto se não há VAI-UM ( not carry ) CF = 0 JO salto se há overflow OF = 1 JNO salto se não há overflow OF = 0 JS salto se o sinal é negativo SF = 1 JNS salto se o sinal é não-negativo (+) SF = 0 JP ou JPE salto se a paridade é PAR ( even ) PF = 1 JNP ou JPO salto se a paridade é IMPAR ( odd ) PF = 0
6.3 Diferença entre Saltos sinalizados e não-sinalizados a) Trecho de programa que supõe quantidades não-sinalizadas : ;supondo que AX contem 7FFFh e BX contem 8000h ... CMP AX,BX JA PT2 ;o salto não ocorre porque 7FFFh < 8000h ... ... PT2: MOV ... ;continuação do programa b) Trecho de programa que supõe quantidades sinalizadas : ;supondo que AX contem 7FFFh e BX contem 8000h ... CMP AX,BX JG PT2 ;o salto ocorre porque 7FFFh (+) > 8000h (-) ... ... PT2: MOV ... ;continuação do programa Exemplo : Supondo que AX e BX contenham números sinalizados, escreva um trecho de programa que coloque o maior deles em CX. ... MOV CX,AX ;AX já é pressuposto ser o maior deles CMP AX,BX JNL ABAIXO ;poderia ser também JGE ABAIXO MOV CX,BX ;caso BX seja de fato o maior deles ABAIXO: ... ;continuação do programa ...
6.5 Uma instrução de laço especial - LOOP. LOOP rótulo_de_destino
6.6 Atividades práticas.
2) FOR loop Em linguagem de alto nível: FOR (número_de_vezes) DO (seqüência de instruções) END_FOR Exemplo : Exiba uma seqüência de 80 asteriscos no monitor de vídeo. Em linguagem de alto nível: FOR (80 vezes) DO (exibir “ * “ ) END_FOR Em linguagem montadora: ... ;for 80 vezes MOV CX,80d MOV AH,2h MOV DL,” * ” ;do TOPO: INT 21h LOOP TOPO ;end_for ... Exercício : modifique o programa que exibe todos os caracteres ASCII (página 1 deste capítulo), utilizando apenas a instrução LOOP.
3) WHILE loop Em linguagem de alto nível: WHILE (condição_verdadeira) DO (seqüência de instruções) END_WHILE Exemplo : Ler caracteres ASCII do teclado, contando sua quantidade, até que o caracter Carriage Return (CR) apareça. Em linguagem de alto nível: WHILE (caracter diferente de CR) DO (ler caracter do teclado e armazená-lo) (contador = contador +1) END_WHILE Em linguagem montadora: ... MOV DX,0h ;inicialização do contador MOV AH,1h INT 21h ;lê o primeiro caracter em AL ;while LOOP: CMP AL,0Dh ;é o caracter CR? JE FIM ;salto quando caracter é igual a CR MOV (algum lugar), AL ;salvando o caracter lido INC DX ;conta número de caracteres INT 21h ;lê o próximo caracter em AL JMP LOOP ;fecha o laço WHILE ;end_while FIM: