CMP
Comparar dos valores.
El resultado se ve reflejado en los flags: ZERO (FZ) Y CARRY (FC)
RESULTADO = AC - XZERO = 0CARRY = 0SI (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
ESTADO | MICRO-OPERACIÓN |
---|---|
S0 | RI ᐊ (PC), PC + 1 |
S1 | DECODE |
S2 | 2OP ᐊ RF |
S7 | AC-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