CMP

Comparar dos valores.

El resultado se ve reflejado en los flags: ZERO (FZ) Y CARRY (FC)

RESULTADO = AC - X
ZERO = 0
CARRY = 0
SI (RESULTADO == 0) {
ZERO = 1
}
SI (RESULTADO < 0) {
CARRY = 1
}

Siendo X el valor a comparar

Como se puede ver en el pseudo-código, para comparar un valor, se utiliza la resta.

Comprobar si el acumulador y otro registro de propósito general son iguales

Serán iguales si el indicador del flag ZERO es 1.

CMP RB

Su pseudo-código sería:

SI ((AC - RB) == 0) {
ZERO = 1
}

Microprograma

ESTADOMICRO-OPERACIÓN
S0RI ᐊ (PC), PC + 1
S1DECODE
S22OP ᐊ RF
S7AC-2OP

Comprobar si el acumulador y un valor inmediato son iguales

Serán iguales si el indicador del flag ZERO es 1.

CMP 0F

Su pseudo-código sería:

SI ((AC - 0xF) == 0) {
ZERO = 1
}

Comprobar si el valor de un registro de propósito general es mayor que el acumulador

RB será mayor que AC si el indicador del flag CARRY es 1.

CMP RB

Su pseudo-código sería:

SI ((AC - RB) < 0) {
CARRY = 1
}

Comprobar si el valor del acumulador es mayor que el de un registro de propósito general

AC será mayor que RB si el indicador del flag CARRY es 0 y ZERO es 0.

CMP RB

Comprueba tus conocimientos

Crea un programa que tenga como resultado: ZERO = 1; CARRY = 0;

Nota: debes conocer y utilizar la operación: MOV

Solución 1
MOV 05, AC MOV 05, RB CMP RB
Solución 2
MOV 05, AC CMP 05