PDA

View Full Version : [assembler 8086] Confronto con un solo operando


Carlez
25-05-2009, 19:03
Ho bisogno di usare il salto condizionato JPE (per saltare se la parità è pari), però prima di questo dovrebbe esserci un confronto.
E qui sorge il mio problema: il confronto non è frà due operandi, ma su uno solo!
Come fare quindi a fare un confronto su un solo operando se l'istruzione CMP ne accetta 2 (destinazione,sorgente)? :mbe:

wingman87
25-05-2009, 19:20
E' impossibile, per definizione il confronto si fa su due o più oggetti.
Che confronto devi fare?

!k-0t1c!
25-05-2009, 19:27
La parity flag è impostata dopo varie istruzioni, non solo CMP. Anche ADD, SUB, MUL e DIV mi pare che impostino la parity flag. Se il salto lo devi fare in funzione di qualcosa che calcoli immediatamente prima, questo risolve il tuo problema. Se invece ti trovi un valore sullo stack o in memoria è un altro discorso. Ma in quel caso il punto diventerebbe: sei sicuro di avere veramente bisogno di una flag che esiste nell'assembly 8086 quasi solo per retrocompatibilità con l'8085?

BrutPitt
25-05-2009, 20:12
Ricordo tanto tempo fa che per fare un salto condizionato "se zero" usavo un'istruzione del tipo:

or AX, AX
jne indirizzo

In cui testavo il flag zero impostato dall'operatore OR, che lasciava il contenuto del registro AX intonso.

Oltre gli operatori aritmetici, come diceva !k-0t1c!, anche quelli logici (or, xor e and) impostano il parity flag, per cui credo che tu possa fare:

or AX, AX
jpe indirizzo

... ma te lo do col beneficio del dubbio.

Carlez
25-05-2009, 20:32
in pratica lo scopo dell'esercizio è : dato in input un array di byte contare quelli che hanno parità pari e quelli che hanno parità dispari.
ho provato in questo modo:

XOR BX,BX
MOV CX,10
CICLO: MOV AL,V[BX]
OR AL,AL
JPE PAR ; salta se la parità è pari
DIS: INC DISPARI ; incrementa contatore dei byte con parità dispari
JMP FINECICLO
PAR: INC PARI ; incrementa il contatore dei byte con parità pari
FINECICLO: INC BX
LOOP CICLO

però continua a non funzionare..:stordita:

rеpne scasb
26-05-2009, 11:05