Академический Документы
Профессиональный Документы
Культура Документы
Bit 17 : VM
Los bits 1,5,12,13,14,15 de este registro Flag de 16 bits no son utilizados.
Las instrucciones aritmticas, lgicas y de comparacin modifican el valor de los
indicadores. Las instrucciones condicionales testean el valor de los indicadores y
actan en funcin del resultado.
Los principales indicadores y su uso:
CF: Carry Flag Indicador de retencin
Luego de una operacin, si el resultado es codificado en un nmero superior de bits,
el bit de ms ser puesto en CF. Varias instrucciones pueden modificar su estado:
CLC para ponerlo a 0, STC a 1 y CMC invierte su valor.
PF: Parity Flag Indicador de paridad
Igual a 1 si el nmero de bits de un operando (parmetro de una instruccin) es par.
AF: Auxiliary carry Flag: Indicador de retencin auxiliar
Parecido a CF
ZF: Zero Flag Indicador Cero
Si el valor de una operacin es nulo (igual a 0) ZF pasar a 1. Este indicador es
frecuentemente utilizado para saber si 2 valores son iguales (sustrayndolos)
SF: Sing Flag Indicador de signo
SF pasa a 1 cuando el resultado es con signo (negativo o positivo)
IF: Interruption Flag Indicador de interrupcin
Permite quitarle la posibilidad al procesador de controlar las interrupciones. Si IF = 1
las interrupciones son tomadas en cuenta y si IF = 0 son ignoradas. La instruccin
STI pone IF a 1 y CLI la pone a 0.
DF: Direction Flag- Indicador de direccin
Indica la manera de desplazar los punteros (referencias) durante las instrucciones
de cadenas (sea positivamente, sea negativamente). STD lo pone a 1 y CLD a 0.
OF: Overflow Flag Indicador de desbordamiento.
Permite encontrar y corregir ciertos errores producidos por instrucciones
matemticas. Muy til para evitar plantones. Si OF=1 entonces se produce un
Overflow
Los otros indicadores no son ms importantes por lo que no los abordaremos.
Pequeo ejemplo de estos indicadores con una operacin en binario:
0110
+0101
- 1011
ZF=0 (resultado 1011 no es nulo)
SF=1 (el signo del resultado es negativo)
CF=0 (no hay retencin)
1
JB Below- Inferior
JBE Below or Equal Inferior o Igual
JC Carry Retencin
JNAE Not Above or Equal No superior o igual
0
JA Above- Superior
JAE Above or Equal- Superior o igual
JNB Not Below No inferior
JNC Not Carry- No retencin
ZF
1
JE Equal- Igual
JNA Not Above- No superior
JZ Zero- Cero (salta en caso de igualdad)
0
JNBE Not Below or Equal- No superior o Igual
JNE Not Equal- No igual
JNZ Not Zero- No Cero (salta si diferente)
PF
1 JP Parity Par
JPE Parity Even- Par
0 JNP Not Parity- Impar
JPO Parity Odd- Impar
OF 1 JO Overflow- Desbordamiento
0 JNO Not Overflow- No desbordamiento
SF 1 JS Signed- Con signo
0 JNS Not Signed- Sin signo
Otros:
JG JNLE
Greater (superior aritmticamente) Not Less or Equal (aritmticamente no inferior
o igual)
ZF=0 y SF=OF
JGE JNL
Greater or Equal (aritmticamente superior o igual) Not Less (No inferior
aritmticamente)
SF=OF
JL JNGE
Less (aritmticamente inferior) Not Greater or Equal (artimticamente no superior
o igual)
SF (con signo) = OF
JLE JNG
Less or Equal (aritmticamente inferior o igual) Not Greater (no superior
aritmticamente)
ZF=1 o SF (con signo)=OF
3.2 La instruccin CMP
Esta instruccin permite efectuar tests entre valores y modificar los flags segn el
6
Bueno, ustedes dirn: y porqu no utilizar un MUL simplemente? Pues porque SHL
se ejecuta mucho ms rpido pero claro que para nmeros que tienen una
descomposicin demasiado larga es mejor utilizar un MUL.
4.5 Lo opuesto de un nmero: NEG
La instruccin que yo creo que es la ms simple es la NEG que sirve transformar un
nmero positivo en negativo e inversamente. Solo se necesita un operando: la
destinacin. Si AX=5, entonces un NEG AX pondr AX=-5. O si BX=-2 entonces
despus de NEG BX, BX=2.
Resultado:
0000 1111 (AX=15)
AND 0001 1010 (BX=26)
--------------------------------0000 1010 (AX=10)
6.2 O Lgico inclusivo: OR
OR efecta un O LOGICO INCLUSIVO sobre 2 operandos y el resultado se
recuperar en el primer operando. El O LOGICO INCLUSIVO da el resultado 0
nicamente si ambos operando son 0, si no pone 1.
Operando 1 Operando 2 OR
000
011
101
111
Ejemplo con AX=15 y BX = 26
OR AX, BX
Resultado:
0000 1111 (AX=15)
OR 0001 1010 (BX=26)
------------------------0001 1111 (AX= 31)
6.3 O Lgico exclusivo: XOR
XOR efecta un O LOGICO EXCLUSIVO sobre dos operandos y el resultado se
recuperar en el primer operando. El O LOGICO EXCLUSIVO da el resultado 1 cuando
los 2 operandos son diferentes, sino pone 0.
Operando 1 Operando 2 XOR
000
011
101
110
Ejemplo con AX = 15 y BX = 26
XOR AX, BX
Resultado:
0000 1111 (AX= 15)
XOR 0001 1010 (BX = 26)
-------------------------0001 0101 (AX=21)
6.4 No lgico: NOT
NOT efecta un NO LOGICO sobre un operando y el resultado se recuperar en el
operando. El NO LOGICO invierte el valor de cada bit.
Operando NOT
01
10
Ejemplo con AX=15
NOT AX
Resultado:
NOT 0000 1111 (AX=15)
10
byte, un Word o un dword. En cambio utilizan AL, AX (EAX 32bits) como valor a
almacenar. El valor AL, AX, EAX ser almacenado en ES:DI. A cada STOSx, DI
augmenta de 1, 2 4 bytes.
Ejemplo:
MOV CX, 10 >nmero de repeticiones puestas en CX, aqu 10
MOV AX, 0 >valor a mover, aqu 0
REP STOSB >almacenar AX en ES:DI
As tendremos 10 bytes de 0 en ES:DI.
Este curso ha sido de teora pura pero no se desmotiven si hay cosas que quedaron
en la sombra ya que pueden contactarme desde el blog o simplemente dejar un
comentario en el minichat y probablemente otras personas podrn ayudar.
De ms est decir que cualquier observacin o sugerencia a propsito de lo que
hacemos, es bienvenida siempre y cuando sea constructiva ;)
Por ltimo, invitarlos a que ojeen nuestros tutoriales que yo espero con esta
contribucin, sern ms fciles de seguir y de leer.
JUNLA
MPT34M
www.mpt34m.net
14