Conteúdo:

Instruções de salto
Instruções de laços: loop
Instruções de contagem
Instruções de comparação
Instruções de flag
Dicionário de computação (em inglês)

Instruções de salto.

Usadas para transferir o processo de execução do programa para o operador indicado.

JMP
JA (JNBE)
JAE (JNBE)
JB (JNAE)
JBE (JNA)
JE (JZ)
JNE (JNZ)
JG (JNLE)
JGE (JNL)
JL (JNGE)
JLE (JNG)
JC
JNC
JNO
JNP (JPO)
JNS
JO
JP (JPE)
JS

INSTRUÇÃO JMP

Propósito: Salto incondicional.

Sintaxe:

JMP destino

Esta instrução é usada par adesviar o curso do programa sem tomar em conta as condições atuais dos flags ou dos dados.

INSTRUÇÃO JA (JNBE)

Propósito: Salto condicional.

Sintaxe:

JA símbolo

Após uma comparação este comando salta se não é igual.

Isto quer dizer que o salto só é feito se o flag CF ou o flag ZF estão desativados, ou seja, se um dos dois for zero.

INSTRUÇÃO JAE (JNB)

Propósito: Salto condicional.

Sintaxe:

JAE símbolo

A instrução salta se está up, se está equal ou se está not down.

O salto é feito se CF está desativado.

INSTRUÇÃO JB (JNAE)

Propósito: Salto condicional.

Sintaxe:

JB símbolo

A instrução salta se está down, se está not up ou se está equal.

O salto é feito se CF está ativado.

INSTRUÇÃO JBE (JNA)

Propósito: Salto condicional.

Sintaxe:

JBE símbolo

A instrução salta se está down, se está equal ou se está not up.

O salto é feito se CF ou ZF estão ativados, ou seja, se um deles for 1.

INSTRUÇÃO JE (JZ)

Propósito: Salto condicional.

Sintaxe:

JE símbolo

A instrução salta se está equal ou se está zero.

O salto é feito se ZF está ativado.

INSTRUÇÃO JNE (JNZ)

Propósito: Salto condicional.

Sintaxe:

JNE símbolo]

A instrução salta se está not equal ou se está zero.

O salto é feito se ZF está desativado.

INSTRUÇÃO JG (JNLE)

Propósito: Salto condicional, e o sinal é tomado.

Sintaxe:

JG símbolo

A instrução salta se está larger, se está not larger ou se está equal.

O salto ocorre se ZF = 0 ou se OF = SF.

INSTRUÇÃO JGE (JNL)

Propósito: Salto condicional, e o sinal é tomado.

Sintaxe:

JGE símbolo

A instrução salta se está larger, se está less than ou se está equal.

O salto é feito se SF = OF.

INSTRUÇÃO JL (JNGE)

Propósito: Salto condicional, e o sinal é tomado.

Sintaxe:

JL símbolo

A instrução salta se está less than, se está not larger than ou se está equal.

O salto é feito se SF é diferente de OF.

INSTRUÇÃO JLE (JNG)

Propósito: Salto condicional, e o sinal é tomado.

Sintaxe:

JLE símbolo

A instrução salta se está less than, se está equal ou se está not larger.

O salto é feito se ZF = 1 ou se SF é diferente de OF.

INSTRUÇÃO JC

Propósito: Salto condicional, e os flags são tomados.

Sintaxe:

JC símbolo

A instrução salta se há carry.

O salto é feito se CF = 1.

INSTRUÇÃO JNC

Propósito: Salto condicional, e o estado dos flags é tomado.

Sintaxe:

JNC símbolo

A instrução salta se não há carry.

O salto é feito se CF = 0.

INSTRUÇÃO JNO

Propósito: Salto condicional, e o estado dos flags é tomado.

Sintaxe:

JNO símbolo

A instrução salta se não há overflow

O salto é feito se OF = 0.

INSTRUÇÃO JNP (JPO)

Propósito: Salto condicional, e o estado dos flags é tomado.

Sintaxe:

JNP símbolo

A instrução salta se não há paridade ou se a paridade é ímpar.

O salto é feito se PF = 0.

INSTRUÇÃO JNS

Propósito: Salto condicional, e o estado dos flags é tomado.

Sintaxe:

JNP símbolo

A instrução salta se o sinal está desativado.

O salto é feito se SF = 0.

INSTRUÇÃO JO

Propósito: Salto condicional, e o estado dos flags é tomado.

Sintaxe:

JO símbolo

A instrução salta se há overflow.

O salto é feito se OF = 1.

INSTRUÇÃO JP (JPE)

Propósito: Salto condicional, e o estado dos flags é tomado.

Sintaxe:

JP símbolo

A instrução salta se há paridade ou se a paridade é par.

O salto é feito se PF = 1.

INSTRUÇÃO JS

Propósito: Salto condicional, e o estado dos flags é tomado.

Sintaxe:

JS símbolo

A instrução salta se o sinal está ativado.

O salto é feito se SF =1.

Instruções para laços: LOOP.

Estas instruções transferem a execução do processo, condicional ou incondicionalmente, para um destino, repetindo a ação até o contador ser zero.
LOOP
LOOPE
LOOPNE

INSTRUÇÃO LOOP

Propósito: Gerar um laço no programa.

Sintaxe:

LOOP símbolo

A instrução LOOP decrementa CX de 1 e transfere a execução do programa para o símbolo que é dado como operador, caso CX ainda não seja 1.

INSTRUÇÃO LOOPE

Propósito: Gerar um laço no programa, considerando o estado de ZF.

Sintaxe:

LOOPE símbolo

Esta instrução decrementa CX de 1. Se CX é diferente de zero e ZF é igual a 1, então a execução do programa é transferida para o símbolo indicado como operador.

INSTRUÇÃO LOOPNE

Propósito: Gerar um laço no programa, considerando o estado de ZF.

Sintaxe:

LOOPNE símbolo

Esta instrução decrementa CX de 1 e transfere a execução do programa apenas se ZF é diferente de 0.

Instruções contadoras.

Estas instruções são usadas para decrementar ou incrementar o conteúdo de contadores.
DEC
INC

DEC INSTRUCTION

Propósito: Decrementar o operador.

Sintaxe:

DEC destino

Esta instrução subtrai 1 do operador destino e armazena o novo valor no mesmo operador.

INSTRUÇÃO INC

Propósito: Incrementar o operador.

Sintaxe:

INC destino

Esta instrução adiciona 1 ao operador destino e mantém o resultado no mesmo operador.

Instruções de comparação.

Estas instruções são usadas para comparar os operadores, e elas afetam o conteúdo dos flags.
CMP
CMPS (CMPSB) (CMPSW)

INSTRUÇÃO CMP

Propósito: Comparar os operadores.

Sintaxe:

CMP destino,fonte

Esta instrução subtrai o operador fonte do destino, mas não armazena o resultado da operação, apenas afeta o estado dos flags.

INSTRUÇÃO CMPS (CMPSB) (CMPSW)

Propósito: Comparar cadeias de um byte ou uma palavra.

Sintaxe:

CMP destino,fonte

Esta instrução compara efetuando uma subtração entre o byte ou palavra endereçado por DI, dentro do segmento extra de dados, e o byte ou palavra endereçado por SI dentro do segmento de dados, afetando o registrador de flags, mas sem devolver o resultado da subtração.

A instrução automaticamente incrementa ou decrementa os registradores de índice SI e DI, dependendo do valor do flag DF, de modo a indicar os próximos dois elementos a serem comparados. O valor de incremento ou decremento é uma de uma ou duas unidades, dependendo da natureza da operação.

Diante desta instrução, pode-se usar um prefixo para repetição, de modo a comparar dois blocos de memória entre si, repetindo a instrução de comparação até que ambos se tornem iguais ou desiguais.

Instruções de flag.

Estas instruções afetam diretamente o conteúdo dos flags.
CLC
CLD
CLI
CMC
STC
STD
STI

INSTRUÇÃO CLC

Propósito: Limpar o flag de carry.

Sintaxe:

CLC

Esta instrução desliga o bit correspondente ao flag de carry. Em outras palavras, ela o ajusta para zero.

INSTRUÇÃO CLD

Propósito: Limpar o flag de endereço.

Sintaxe:

CLD

Esta instrução desliga o bit correspondente ao flag de endereço.

INSTRUÇÃO CLI

Propósito: Limpar o flag de interrupção.

Sintaxe:

CLI

Esta instrução desliga o flag de interrupções, desabilitando, deste modo, interrupções mascaráveis.

Uma interrupção mascarável é aquela cujas funções são desativadas quando IF=0.

INSTRUÇÃO CMC

Propósito: Complementar o flag de carry.

Sintaxe:

CMC

Esta instrução complementa o estado do flag CF. Se CF = 0 a instrução o iguala a 1. Se CF = 1, a instrução o iguala a 0.

Poderíamos dizer que ela apenas inverte o valor do flag.

INSTRUÇÃO STC

Propósito: Ativar o flag de carry.

Sintaxe:

STC

Esta instrução ajusta para 1 o flag CF.

INSTRUÇÃO STD

Propósito: Ativar o flag de endereço.

Sintaxe:

STD

Esta instrução ajusta para 1 o flag DF.

INSTRUÇÃO STI

Propósito: Ativar o flag de insterrupção.

Sintaxe:

STI

Esta instrução ativa o flag IF, e habilita interrupções externas mascaráveis (que só funcionam quando IF = 1).

WG
Powered by WebGlimpse