Operadores condicionales en z80 ASM

Por assembler

Champion (404)

Imagen del assembler

27-04-2011, 15:52

Buenas.

Estoy haciendo pruebas de IA con VFP, y ahí no tengo ningún problema con las comparaciones (faltaría más), pero en ASM ando un poco perdido.

Sé que con un jp P,MAYOROIGUAL, salto si A>=valor_comparado

pero no quiero tener que pelearme con los flags para ver el resto de comparaciones: >, < <=, y sobre todo cuando trabajo con números "negativos".

¿Alguien me puede echar una mano con este tema?

Gracias de antemano

Login sesión o register para postear comentarios

Por pitpan

Prophet (3144)

Imagen del pitpan

27-04-2011, 22:00

Eins?

Primero haces la comparación correspondiente con un buen CP (o una operación aritmética como ADD, ADC, SUB, SBC, etc.) y después ya tendrás las banderas como corresponde. Al final, todas se basan en los valores de las banderas Z (zero-flag) y C (carry-flag).

cp A,B

NZ, C si A Z, NC si A=B
NZ, NC si A>B

Con esto debería bastar...

Por assembler

Champion (404)

Imagen del assembler

27-04-2011, 22:54

Entonces para qué sirven las condiciones PO, PE, P y M ?

Lo he probado, y si comparo -1 con 0, se activa NC (255>0)

Con lo bonicas que son las instrucciones de salto del 80x86... Tongue

Por pitpan

Prophet (3144)

Imagen del pitpan

28-04-2011, 15:02

La operación que hace CP es equivalente a SUB, pero sin almacenar el resultado. -1 - 0 = -1 -> NC para la operación. Si quieres saber si un número es positivo o negativo emplea la instrucción BIT, por ejemplo. Más eficiente que hacer CP 0 Sad