Saltar al contenido

Entendiendo la instrucción cmp

Basta ya de buscar en otros sitios ya que llegaste al espacio justo, poseemos la solución que necesitas encontrar sin liarte.

Solución:

cmp arg2, arg1 realiza la misma operación que sub arg2, arg1excepto que no se modifique ninguno de los operandos. La diferencia no se almacena en cualquier sitio.

Sin embargo, las banderas registran es actualizado y se puede usar en un salto condicional, como jump-if-equal (JE), la mayoría de las veces como la siguiente instrucción después de la cmp.

La ventaja sobre otras instrucciones es que puedes comparar dos valores sin destruir ninguno de ellos. Si lo hiciste sub arg2, arg1 y resultan ser iguales, uno de ellos sería cero después. Con cmp ambos todavía están allí.

Usamos cmp arg2, arg1 cuando nos importa si arg1 y arg 2 son iguales. El procesador determina esto restando arg2 de arg1 y luego mirando el resultado. Si el resultado es cero (es decir, arg1 = arg2), entonces el procesador establece el indicador cero (por “establece el indicador”, queremos decir que lo establece en 1). Por el contrario, si el resultado no es cero (es decir, arg1 != arg2), el procesador borra el indicador cero (es decir, lo establece en 0). El resultado en sí se descarta, porque no nos importa qué es, solo si es cero o no, que ahora sabemos en función de si el indicador cero está establecido. Entonces podemos usar instrucciones como JE, JNE, JZ y JNZ que examinan la bandera cero y saltan (o no) en función de su valor. En el caso de JE (salto si es igual), el salto ocurrirá si se establece el indicador cero, que (como aprendimos anteriormente) será si los argumentos en el cmp eran iguales.

los resultados de CMP están cambiando los valores de ZF y CF, estos son algunos ejemplos para entender mucho la instrucción CMP.

Ejemplo 1: si AX < BX

MOV AX,5
MOV BX,8
CMP AX,BX 

Resultado: ZF y CF establecidos en ==> “ZF = 0” y “CF = 1”



Ejemplo 2: si AX > BX

MOV AX,8
MOV BX,5
CMP AX,BX

Resultado: ZF y CF configurados en ==> “ZF = 0” y “CF = 0”



Ejemplo 3: si AX = BX

MOV AX,5
MOV BX,AX
CMP AX,BX 

Resultado: ZF y CF configurados en ==> “ZF = 1” y “CF = 0”



Espero que entiendas que los resultados de CMP están cambiando el valor de ZF y CF.
ZF = bandera cero
CF = bandera de acarreo

Reseñas y valoraciones del tutorial

Puedes añadir valor a nuestra información añadiendo tu veteranía en las aclaraciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *