Operadores condicionales en z80 ASM

Door assembler

Champion (378)

afbeelding van 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

Aangemeld of registreer om reacties te plaatsen

Van pitpan

Prophet (3131)

afbeelding van 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...

Van assembler

Champion (378)

afbeelding van 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

Van pitpan

Prophet (3131)

afbeelding van 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