Instruções de Transferência de Controle
As instruções de transferência de controle são responsáveis por alterar o fluxo de execução do programa. Elas incluem saltos incondicionais e condicionais, loops, chamadas de funções, retornos e interrupções. Abaixo estão alguns exemplos comuns dessas instruções:
Saltos Incondicionais
- JMP: Salta incondicionalmente para o destino especificado.
Saltos Condicionais
- JE/JZ: Salta se os valores forem iguais ou se o resultado for zero.
- JNE/JNZ: Salta se os valores não forem iguais ou se o resultado não for zero.
- JA/JNBE: Salta se for maior ou se não for menor ou igual.
- JAE/JNB: Salta se for maior ou igual ou se não for menor.
- JB/JNAE: Salta se for menor ou se não for maior ou igual.
- JBE/JNA: Salta se for menor ou igual ou se não for maior.
Loops
- LOOP: Executa um loop enquanto o registrador ECX não for zero.
- LOOPZ/LOOPE: Executa o loop enquanto ECX não for zero e o zero flag estiver ativo.
- LOOPNZ/LOOPNE: Executa o loop enquanto ECX não for zero e o zero flag não estiver ativo.
Chamada e Retorno de Funções
- CALL: Chama uma função ou procedimento.
- RET: Retorna da função ou procedimento.
- IRET: Retorna de uma interrupção.
Interrupções e Tratamento de Exceções
- INT: Gera uma interrupção de software.
- INTO: Gera uma interrupção de overflow.
- BOUND: Detecta se um valor está fora do intervalo especificado.
Procedimentos de Entrada e Saída de Funções
- ENTER: Entrada de um procedimento de alto nível.
- LEAVE: Saída de um procedimento de alto nível.
Essas instruções são fundamentais para o controle do fluxo de execução em programas Assembly.