|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Member
Iscritto dal: Jul 2008
Messaggi: 81
|
[assembler 8086] Confronto con un solo operando
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)?
|
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Messaggi: 2791
|
E' impossibile, per definizione il confronto si fa su due o più oggetti.
Che confronto devi fare? |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Jul 2008
Messaggi: 237
|
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?
|
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Mar 2009
Città: Bologna
Messaggi: 1174
|
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. Ultima modifica di BrutPitt : 25-05-2009 alle 20:20. |
|
|
|
|
|
#5 |
|
Member
Iscritto dal: Jul 2008
Messaggi: 81
|
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: Codice:
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
|
|
|
|
|
|
#6 |
|
Senior Member
Iscritto dal: May 2008
Messaggi: 533
|
■
Ultima modifica di rеpne scasb : 18-06-2012 alle 15:34. |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 04:25.



















