Funcion CMOV
Recordemos un poco del código de operación MOV:
Función que copia un reistro o elemento del registro del operando uno al operando dos.Sintaxis:
MOV operando2,operando1
Ejemplo:
MOV AX,BX
Función:
copia el valor del registro de propósito general BX al acumulador AX.
Esta instrucción esun movimiento condicional
solo permite copiar datos de 16 bits y 32 bits
Ejemplos:
CMOV AX,BX
CMOV EAX,EBX
Función CMOV
La función de CMOVpuede copiar una palabra o doble palabra
del origen al destino que deben de ser del mismo tamaño. Trabaja del mismo modo que MOV solo que con uncondicionamiento que depende del estado de las banderas
Tablas de requerimiento de estado de banderas:
Ejemplo :
Caso 1 operación sin CMOV
XOR EBX, EBX;Borrar registro para su despues
ADD ECX, [SMALL_COUNT]; Ajusta por un pequeño valor del contador
JNC Continuar; ECX Si no se sobrecarga, continúeMOV ECX, EBX, ECX Reinicializar si se sobrecargo
Ejemplo:
Caso 2 operación con CMOV
XOR EBX, EBX; Borrar registro para despues
ADD ECX, [SMALL_COUNT];Ajusta por un pequeño valor del contador
CMOVC ECX, EBX, ECX; Si es sobrecargado, reinicializar a EBX
Como se puede ver en este ejemplo, el objetivo erareiniciar ECX a 0, si se desbordó durante una operación ADD. Puesto que ésta era la única condición en la que queríamos para reiniciar ECX, la rama setomaría casi todo el tiempo, hasta que se produzca un desbordamiento.
Mediante el uso de la instrucción CMOV, el JMP se evita prácticamente todo el tiempo
Regístrate para leer el documento completo.