La instrucción CMP compara dos operandos restándolos y establece las banderas de estado sin almacenar el resultado, lo que permite realizar saltos condicionales. La instrucción CMP se usa con registros, direcciones de memoria y valores para comparaciones que controlan el flujo del programa.
4. Ésta instrución realiza una operación aritmética, ya que resta
el operando fuente del operando destino, solo que el resultado no se
almacena en el operando destino, el resultado se utiliza para activar
las banderas.
- si esta resta da 0, quiere decir que la comparación fue igual,
- si la resta fue mayor a 0, positivo es que fue mayor uno de los operandos,
- si la resta es menor a 0, negativo es que es menor uno de los operandos
cmp (3,3) ------- > ZF = 1 CF = 0
cmp (4,3) ------- > ZF = 0 CF = 0
cmp (3,4) ------- > ZF = 0 CF = 1
INSTRUCCIÓN CMP
5. Ejemplo de cómo podemos usar la comparación:
1. CMP AX, BX ; registro a registro
2. CMP AX, VAR ;registro a direccion de memoria
3. CMP AX, 0 ;registro a un valor
4. CMP byte PTR VAR, 1 ; un byte de una dirección de memoria contra
un valor
INSTRUCCIÓN CMP
6. La instrucción CMP trabaja con las instrucciones de
saltos para formar estructuras de control, todos vienen acompañados
de una etiqueta:
JA o JNBE, JAE o JNB, JB o JNAE, JNA, JBE, JE, JZ
INSTRUCCIÓN CMP