Registradores de Controle
Neste grupo temos dois registradores:
IP - ponteiro de instruções, contém o deslocamento (em
relação ao segmento de codigo apontado por CS) da
próxima instrução a executar. Este registrador
não é acessivel diretamente, sendo manipulado
pelas instruções de desvio.
"F" - este registrador ("flags") contém vários bits que
são utilizados pelo 8088 para indicar resultados
ou controlar operações:
indicadores de resultado
AF - "vai um" auxiliar, utilizado em opera-
ções sobre números no formato "BCD
compactado".
CF - "vai um" ("carry"), indica que o resul-
tado de uma operação não coube na área
destinada. Usado tambem nas instruções
de deslocamento e rotação.
OF - "overflow", indica que o resultado de
uma operação aritmética com sinal não
coube na área destinada.
PF - paridade, contém "1" quando o resultado
da última operação continha um número
par de "1"s.
SF - sinal, corresponde ao bit mais signifi-
cativo do resultado da última operação.
ZF - zero, indica se o resultado da última
operação foi zero.
flags de controle
DF - controla as operações de manipulação de
cadeias, selecionando autoincremento
("0") ou autodecremento ("1").
IF - habilita ("1") ou desabilita ("0")
interrupções externas
TF - quando em "1" coloca o processador no
modo "passo a passo", usado para
depuração.
==================
CMP - Comparação
==================
Codificação:
CMP reg,reg
CMP mem,reg
CMP reg,mem
CMP reg,imed
CMP mem,imed
Operação:
A instrução CMP posiciona os flags de forma equivalente
a uma subtração sem alterar os operandos.
Flags Afetados
AF, OF, PF, SF e ZF
Exemplos:
CMP CX,DX
CMP MATRIZ[BX],BP
CMP SP,VARIAVEL
CMP SI,50
CMP VARIAVEL,3
========================
JE/JZ - Desvia se Zero
========================
Codificação:
JE rótulo
JZ rótulo
Operação:
Se ZF = 1, soma a IP a distância (-128 a +127, contida
na instrução) entre o operando e a instrução seguinte.
Flags Afetados
nenhum
Comentários
O mnemônico JE corresponde a "desvio se igual" e é
normalmente utilizado após uma instrução CMP; JZ signi-
fica "desvio se zero" e é normalmente utilizado após
uma instrução aritmética ou lógica. Os dois mnemônicos
correspondem à mesma instrução.
==============================
JNE/JNZ - Desvia se não Zero
==============================
Codificação:
JNE rótulo
JNZ rótulo
Operação:
Se ZF = 0, soma a IP a distância (-128 a +127, contida
na instrução) entre o operando e a instrução seguinte.
Flags Afetados
nenhum
Comentários
O mnemônico JNE corresponde a "desvio se diferente" e é
normalmente utilizado após uma instrução CMP; JNZ
significa "desvio se não zero" e é normalmente utili-
zado após uma instrução aritmética ou lógica. Os dois
mnemônicos correspondem à mesma instrução.
============================
JB/JNAE - Desvia se Abaixo
============================
Codificação:
JB rótulo
JNAE rótulo
Operação:
Se CF = 1, soma a IP a distância (-128 a +127, contida
na instrução) entre o operando e a instrução seguinte.
Flags Afetados
nenhum
Comentários
Os mnemônicos JB ("desvio se abaixo") e JNAE ("desvio
se não acima ou igual") correspondem à mesma instru ção,
sendo normalmente utilizados após uma comparação entre
números SEM sinal.
================================
JNB/JAE - Desvia se não Abaixo
================================
Codificação:
JNB rótulo
JAE rótulo
Operação:
Se CF = 0, soma a IP a distância (-128 a +127, contida
na instrução) entre o operando e a instrução seguinte.
Flags Afetados
nenhum
Comentários
Os mnemônicos JNB ("desvio se não abaixo") e JAE
("desvio se acima ou igual") correspondem à mesma
instrução, sendo normalmente utilizados após uma compa-
ração entre números SEM sinal.
===========================
JA/JNBE - Desvia se Acima
===========================
Codificação:
JA rótulo
JNBE rótulo
Operação:
Se ZF=0 e CF=0, soma a IP a distância (-128 a +127,
contida na instrução) entre o operando e a instrução
seguinte.
Flags Afetados
nenhum
Comentários
Os mnemônicos JA ("desvio se acima") e JNBE ("desvio se
não abaixo ou igual") correspondem à mesma instrução,
sendo normalmente utilizados após uma comparação entre
números SEM sinal.
===============================
JNA/JBE - Desvia se não Acima
===============================
Codificação:
JNA rótulo
JBE rótulo
Operação:
Se ZF=1 ou CF=1, soma a IP a distância (-128 a +127,
contida na instrução) entre o operando e a instrução
seguinte.
Flags Afetados
nenhum
Comentários
Os mnemônicos JNA ("desvio se não acima") e JBE
("desvio se abaixo ou igual") correspondem à mesma
instrução, sendo normalmente utilizados após uma compa-
ração entre números SEM sinal.
===========================
JL/JNGE - Desvia se Menor
===========================
Codificação:
JL rótulo
JNGE rótulo
Operação:
Se SF<>OF, soma a IP a distância (-128 a +127, contida
na instrução) entre o operando e a instrução seguinte.
Flags Afetados
nenhum
Comentários
Os mnemônicos JL ("desvio se menor") e JNGE ("desvio se
não maior ou igual") correspondem à mesma instrução,
sendo normalmente utilizados após uma comparação entre
números COM sinal.
===============================
JNL/JGE - Desvia se não Menor
===============================
Codificação:
JNL rótulo
JGE rótulo
Operação:
Se SF=OF, soma a IP a distância (-128 a +127, contida
na instrução) entre o operando e a instrução seguinte.
Flags Afetados
nenhum
Comentários
Os mnemônicos JNL ("desvio se não menor") e JGE
("desvio se maior ou igual") correspondem à mesma
instrução, sendo normalmente utilizados após uma compa-
ração entre números COM sinal.
===========================
JG/JNLE - Desvia se Maior
===========================
Codificação:
JG rótulo
JNLE rótulo
Operação:
Se ZF=0 e SF=OF, soma a IP a distância (-128 a +127,
contida na instrução) entre o operando e a instrução
seguinte.
Flags Afetados
nenhum
Comentários
Os mnemônicos JG ("desvio se maior") e JNLE ("desvio se
não menor ou igual") correspondem à mesma instrução,
sendo normalmente utilizados após uma comparação entre
números COM sinal.
===============================
JNG/JLE - Desvia se não Maior
===============================
Codificação:
JNG rótulo
JLE rótulo
Operação:
Se ZF=1 ou SF<>OF, soma a IP a distância (-128 a +127,
contida na instrução) entre o operando e a instrução
seguinte.
Flags Afetados
nenhum
Comentários
Os mnemônicos JNG ("desvio se não maior") e JLE
("desvio se menor ou igual") correspondem à mesma
instrução, sendo normalmente utilizados após uma compa-
ração entre números COM sinal.
Exemplo
mov ax, 5
mov bx, 1
L1: cmp ax, 0 //compara 0 com o valor em ax
je L2 //pula p/ L2 se 0==ax (je – pula se igual)
mul bx, ax // bx = bx*ax
dec ax //decrementa eax
jmp L1 // pulo incondicional para L1
L2: ret
Assinar:
Postar comentários (Atom)
Nenhum comentário:
Postar um comentário