PDA

View Full Version : [ASSEMBLER] bit di parita'


DarkicK
28-05-2008, 22:50
Ciao a tutti,
mi serve un aiuto in assembler, premetto che non voglio lo svolgimento intero del programma ma solo una breve spiegazione.

Devo poter ideare, mediante assembler, un programma che controlli la correttezza del bit di parita' di un numero in forma binaria.

Cioè, prendendo il numero binario dal data-segment, devo poter verificare
la correttezza del bit di parita' pari, gli unici aiuti che mi sono stati dati sono di utilizzare il salto condizionato JP e il controllo del flag PARITY del registro dei flag.

Ma non so' veramente da dove iniziare.

Potete aiutarmi?

GRAZIE

variabilepippo
28-05-2008, 23:05
Ma non so' veramente da dove iniziare.


Potresti iniziare specificando l'architettura (x86? Z80? MIPS? ...?) e l'assembler di riferimento.


assembler


Un assembler è il "compilatore" di codice Assembly, dunque nel tuo caso è più corretto parlare di Assembly.

DarkicK
29-05-2008, 06:27
Scusa se non sono stato molto chiaro, perchè sono inesperto.
Comunque l'architettura di riferimento è l'8086.
e il compilatore che uso è il TASM.

GRAZIE

amedeoviscido
30-05-2008, 10:53
Innanzitutto vediamo se hai chiaro cosa significa "bit di parità pari". Fai il caso ce lo dovessi spiegare: dopo ti darò qualche dritta in macrolinguaggio, così ti eserciti.

DarkicK
03-06-2008, 08:23
Innanzitutto vediamo se hai chiaro cosa significa "bit di parità pari". Fai il caso ce lo dovessi spiegare: dopo ti darò qualche dritta in macrolinguaggio, così ti eserciti.

OK
ad esempio su una stringa di bit: 0110111
il bit di parita' pari sara' uguale a 1

va bene questo esempio???

variabilepippo
03-06-2008, 09:51
Non scrivo codice Assembly a 16 bit da una vita, ma provo comunque a fornirti una traccia della soluzione:


XOR CX,CX ; Azzera il contatore
MOV AX,SI ; Il registro EAX ora contiene il numero da analizzare
TEST SI,SI ; Il valore da testare è nullo?
JE SHORT LABEL2
LABEL1 ; Conta il numero di bit = 1 presenti
MOV DX,AX
AND DX,1
ADD CX,DX
SHR AX,1
JNZ SHORT LABEL1
LABEL2:
NOT CX
TEST CL, 1
JE DISPARI
; Qui stampi il messaggio "bit di parità giusto"
JMP SHORT FINE
DISPARI:
; Qui stampi il messaggio "bit di parità sbagliato"
FINE:


A te il compito di renderla funzionante... ;)

DarkicK
03-06-2008, 23:05
Non scrivo codice Assembly a 16 bit da una vita, ma provo comunque a fornirti una traccia della soluzione:


XOR CX,CX ; Azzera il contatore
MOV AX,SI ; Il registro EAX ora contiene il numero da analizzare
TEST SI,SI ; Il valore da testare è nullo?
JE SHORT LABEL2
LABEL1 ; Conta il numero di bit = 1 presenti
MOV DX,AX
AND DX,1
ADD CX,DX
SHR AX,1
JNZ SHORT LABEL1
LABEL2:
NOT CX
TEST CL, 1
JE DISPARI
; Qui stampi il messaggio "bit di parità giusto"
JMP SHORT FINE
DISPARI:
; Qui stampi il messaggio "bit di parità sbagliato"
FINE:


A te il compito di renderla funzionante... ;)

GRAZIE MILLE PER IL TUO AIUTO
ma il mio problema è che non devo controllare il byte preso un bit alla volta
come hai fatto te, ma devo verificare tutto il byte.
Spero tu abbia capito, quello che sto dicendo...

e poi dall'insegnante mi è stato detto che devo utilizzare il salto condizionato JP e il controllo del flag PARITY del registro dei flag.

gentilmente sapresti aiutarmi??

GRAZIE MILLE LO STESSO